IP Library Granted Patent US 11,995,016
Granted Patent B2
US 11,995,016 · App. 17/201,232 · Granted May 28, 2024

Input/output command rebalancing in a virtualized computer system

Inventor: Huamin Chen (Westborough, MA)
Assignee: Red Hat, Inc.
G06F13/37G06F3/061G06F3/0659G06F3/067G06F2009/45579
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,995,016
App. No.
17/201,232
Granted
May 28, 2024
Kind
B2
Abstract

The present disclosure provides new methods and systems for input/output command rebalancing in virtualized computer systems. For example, an I/O command may be received by a rebalancer from a virtual queue in a container. The container may be in a first virtual machine. A second I/O command may be received from a second virtual queue in a second container which may be located in a second virtual machine. The rebalancer may detect a priority of the first I/O command and a priority of the second I/O command. The rebalancer may then assign an updated priority each I/O command based on a quantity of virtual queues in the virtual machine of origin and a quantity of I/O commands in the virtual queue of origin. The rebalancer may dispatch the I/O commands to a physical queue.

Claims (42)

1. A method of queuing I/O commands, comprising:

receiving a first I/O command having a first priority from a first virtual queue;

receiving a second I/O command having a second priority from a second virtual queue;

detecting the first priority of the first I/O command and the second priority of the second I/O command;

determining a first quantity of available virtual queues, a first quantity of I/O commands in the available virtual queues, and a first container priority of a container which originated the first I/O command;

assigning, at a rebalancer, a first updated priority to the first I/O command and a second updated priority to the second I/O command, wherein the rebalancer assigns the first updated priority based on the first quantity of available virtual queues, the first quantity of I/O commands in the available virtual queues, and the first container priority; and

dispatching the first I/O command to a first physical queue and the second I/O command to a second physical queue;

dispatching the first I/O command from the first physical queue to a weighted round robin; and

dispatching the second I/O command from the second physical queue to the weighted round robin after dispatching the first I/O command, wherein the weighted round robin outputs the second I/O command before the first I/O command.

2. The method of claim 1 , wherein the weighted round robin reorders the first I/O command and the second I/O command based on the first updated priority and second updated priority and dispatches the first I/O command and the second I/O command to a processor.

3. The method of claim 1 , wherein the first virtual queue is located in at least one of a first container or a first application, and wherein the at least one of the first container or the first application is in a first virtual machine.

4. The method of claim 3 , wherein the first I/O command is dispatched to the first physical queue based on capacity in the first physical queue and the second I/O command is dispatched to the second physical queue based on capacity in the second physical queue.

5. The method of claim 1 , wherein the second updated priority is further based on a second container priority.

6. The method of claim 5 , wherein the first container priority is based on at least one of a user status, an application status, or an operation status.

7. The method of claim 1 , wherein the first priority is detected from a command field of the first I/O command.

8. A system for queuing I/O commands comprising:

a processor;

a memory;

a weighted round robin, wherein the weighted round robin receives a first I/O command with a first updated priority followed by a second I/O command with a second updated priority and dispatches the second I/O command before the first I/O command to the processor; and

a rebalancer, wherein the rebalancer:

receives the first I/O command having a first priority from a first virtual queue;

receives the second I/O command having a second priority from a second virtual queue;

detects the first priority of the first I/O command and the second priority of the second I/O command;

determines a first quantity of available virtual queues, a first quantity of I/O commands in the available virtual queues, and a first container priority of a container which originated the first I/O command;

assigns the first updated priority to the first I/O command and the second updated priority to the second I/O command, wherein the rebalancer assigns the first updated priority based on the first quantity of available virtual queues, the first quantity of I/O commands in the available virtual queues, and the first container priority; and

dispatches the first I/O command and the second I/O command to the weighted round robin.

9. The system of claim 8 , wherein the first virtual queue is located in at least one of a first container or a first application, and wherein the at least one of the first container or the first application is in a first virtual machine.

10. The system of claim 8 , wherein the first physical queue is different from the second physical queue.

11. The method of claim 10 , wherein the first I/O command is dispatched to a first physical queue based on capacity in the first physical queue and the second I/O command is dispatched to a second physical queue based on capacity in the second physical queue.

12. The system of claim 9 , wherein the first container priority is based on at least one of a user status, an application status or an operation status.

13. The system of claim 8 , further comprising an orchestrator that receives a command to create a first container; and

in response to the received command, the orchestrator creates the first container.

14. The system of claim 13 , wherein the orchestrator assigns the first priority to the first I/O command.

15. The system of claim 8 , wherein the first priority of the first I/O command is detected from a command field of the first I/O command.

16. The system of claim 8 , wherein the rebalancer is a non-volatile memory express storage controller.

17. A non-transitory computer readable medium storing instructions, which when executed, cause a weighted round robin to receive a first I/O command followed by a second I/O command and dispatch the second I/O command followed by the first I/O command to a processor; and cause a rebalancer to:

receive the first I/O command having a first priority from a first virtual queue;

receive the second I/O command having a second priority from a second virtual queue;

detect the first priority of the first I/O command and the second priority of the second I/O command;

determine a first quantity of available virtual queues, a first quantity of I/O commands in the available virtual queues, and a first container priority of a container which originated the first I/O command;

assign the first updated priority to the first I/O command and the second updated priority to the second I/O command, wherein the rebalancer assigns the first updated priority based on the first quantity of virtual queues, the first quantity of I/O commands in the available virtual queues, and the first container priority; and

dispatch the first I/O command to the weighted round robin.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2021
From: CHEN, HUAMIN
To: RED HAT, INC.
Reel/Frame 055590/0340 →