IP Library Granted Patent US 12,135,661
Granted Patent B2
US 12,135,661 · App. 17/851,357 · Granted Nov 5, 2024

Processing I/O commands using block size aware polling

Inventors: Ran Peng (Beijing, CN); Yang Bai (Beijing, CN); Wenchao Cui (Beijing, CN); Yu Zhao (Beijing, CN); Zhihao Yao (Beijing, CN)
Assignee: VMware LLC
G06F13/20G06F13/24G06F2213/24G06F2213/40
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 12,135,661
App. No.
17/851,357
Granted
Nov 5, 2024
Kind
B2
Abstract

Example computer-implemented methods, media, and systems for processing input/output (I/O) commands using block size aware polling are disclosed. One example method includes creating multiple polling queues and multiple interrupt queues in a transport drivers layer of a storage stack. A first I/O command is received from a core layer of the storage stack and by the transport drivers layer. A ratio of a total number of multiple small block size commands in the transport drivers layer to a total number of multiple outstanding I/O commands in the transport drivers layer is determined to be larger than a predetermined first threshold. In response to determining that the ratio is larger than the predetermined first threshold, the polling mode is applied to the first I/O command through the submission of the first I/O command to a first polling queue in the multiple polling queues.

Claims (67)

1. A computer-implemented method, comprising:

creating, in a transport driver layer of a storage stack, a plurality of polling queues that process cached input/output (I/O) commands using a polling mode and a plurality of interrupt queues that process cached I/O commands in an interrupt mode;

receiving, from a core layer of the storage stack and by the transport driver layer, a plurality of I/O commands, the plurality of I/O commands comprising a first I/O command;

identifying a first value representing a total amount of unprocessed I/O commands in the transport driver layer;

identifying a second value representing an amount of unprocessed I/O commands in the transport driver layer with block sizes below a first threshold size;

calculating a ratio of the second value to the first value; and

if the ratio is larger than a threshold ratio, submitting the first I/O command to one of the plurality of polling queues; and

if the ratio is not larger than the threshold ratio:

determining a block size of the first I/O command;

if the block size of the first I/O command is not larger than a second threshold size, submitting the first I/O command to one of the plurality of polling queues; and

if the block size of the first I/O command is larger than the second threshold size, submitting the first I/O command to one of the interrupt queues.

2. The computer-implemented method according to claim 1 , further comprising:

establishing the plurality of polling queues; and

establishing the plurality of interrupt queues;

wherein the plurality of polling queues and the plurality of interrupt queues each consists of a same number of queues.

3. The computer-implemented method according to claim 1 , further comprising:

testing storage performance of a plurality of ratios by performing a plurality of I/O commands with mixed block sizes;

determining the threshold ratio from the plurality of possible ratios based on the storage performance.

4. The computer-implemented method according to claim 1 , wherein the transport driver layer exposes at least one of the total number of the plurality of polling queues or the total number of the plurality of interrupt queues to the core layer.

5. The computer-implemented method according to claim 1 , wherein the storage stack further comprises at least one of a filesystem device switch (FDS) layer, a pluggable storage architecture (PSA) layer, or a devices layer.

6. The computer-implemented method according to claim 1 , wherein a respective interrupt handler of each polling queue in the plurality of polling queues applies the polling mode to I/O commands submitted to each polling queue.

7. The computer-implemented method according to claim 1 , wherein the first threshold size is equal to the second threshold size.

8. A non-transitory, computer-readable medium storing one or more instructions executable by a computer system to perform operations, the operations comprising:

creating, in a transport driver layer of a storage stack, a plurality of polling queues that process cached input/output (I/O) commands using a polling mode and a plurality of interrupt queues that process cached I/O commands in an interrupt mode;

receiving, from a core layer of the storage stack and by the transport driver layer, a plurality of I/O commands, the plurality of I/O commands comprising a first I/O command;

identifying a first value representing a total amount of unprocessed I/O commands in the transport driver layer;

identifying a second value representing an amount of unprocessed I/O commands in the transport driver layer with block sizes below a first threshold size;

calculating a ratio of the second value to the first value; and

if the ratio is larger than a threshold ratio, submitting the first I/O command to one of the plurality of polling queues; and

if the ratio is not larger than the threshold ratio:

determining a block size of the first I/O command;

if the block size of the first I/O command is not larger than a second threshold size, submitting the first I/O command to one of the plurality of polling queues; and

if the block size of the first I/O command is larger than the second threshold size, submitting the first I/O command to one of the interrupt queues.

9. The non-transitory, computer-readable medium according to claim 8 , wherein the operations further comprise:

establishing the plurality of polling queues; and

establishing the plurality of interrupt queues;

wherein the plurality of polling queues and the plurality of interrupt queues each consists of a same number of queues.

10. The non-transitory, computer-readable medium according to claim 8 , wherein the operations further comprise:

testing storage performance of a plurality of ratios by performing a plurality of I/O commands with mixed block sizes;

determining the threshold ratio from the plurality of possible ratios based on the storage performance.

11. The non-transitory, computer-readable medium according to claim 8 , wherein the transport driver layer exposes at least one of the total number of the plurality of polling queues or the total number of the plurality of interrupt queues to the core layer.

12. The non-transitory, computer-readable medium according to claim 8 , wherein the storage stack further comprises at least one of a filesystem device switch (FDS) layer, a pluggable storage architecture (PSA) layer, or a devices layer.

13. The non-transitory, computer-readable medium according to claim 8 , wherein a respective interrupt handler of each polling queue in the plurality of polling queues applies the polling mode to I/O commands submitted to each polling queue.

14. The non-transitory, computer-readable medium according to claim 8 , wherein the first size threshold is equal to the second threshold size.

15. A computer-implemented system, comprising:

one or more computers; and

one or more computer memory devices interoperably coupled with the one or more computers and having tangible, non-transitory, machine-readable media storing one or more instructions that, when executed by the one or more computers, perform one or more operations, the one or more operations comprising:

creating, in a transport driver layer of a storage stack, a plurality of polling queues that process cached input/output (I/O) commands using a polling mode and a plurality of interrupt queues that process cached I/O commands in an interrupt mode;

receiving, from a core layer of the storage stack and by the transport driver layer, a plurality of I/O commands, the plurality of I/O commands comprising a first I/O command;

identifying a first value representing a total amount of unprocessed I/O commands in the transport driver layer;

identifying a second value representing an amount of unprocessed I/O commands in the transport driver layer with block sizes below a first threshold size;

calculating a ratio of the second value to the first value; and

if the ratio is larger than a threshold ratio, submitting the first I/O command to one of the plurality of polling queues; and

if the ratio is not larger than the threshold ratio:

determining a block size of the first I/O command;

if the block size of the first I/O command is not larger than a second threshold size, submitting the first I/O command to one of the plurality of polling queues; and

if the block size of the first I/O command is larger than the second threshold size, submitting the first I/O command to one of the interrupt queues.

16. The computer-implemented system according to claim 15 , wherein the one or more operations further comprise:

establishing the plurality of polling queues; and

establishing the plurality of interrupt queues;

wherein the plurality of polling queues and the plurality of interrupt queues each consists of a same number of queues.

17. The computer-implemented system according to claim 15 wherein the one or more operations further comprise:

testing storage performance of a plurality of ratios by performing a plurality of I/O commands with mixed block sizes;

determining the threshold ratio from the plurality of possible ratios based on the storage performance.

18. The computer-implemented system according to claim 15 , wherein the transport driver layer exposes at least one of the total number of the plurality of polling queues or the total number of the plurality of interrupt queues to the core layer.

19. The computer-implemented system according to claim 15 , wherein the storage stack further comprises at least one of a filesystem device switch (FDS) layer, a pluggable storage architecture (PSA) layer, or a devices layer.

20. The computer-implemented system according to claim 15 , wherein the first threshold size is equal to the second threshold size.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0242 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2022
From: PENG, RAN; BAI, YANG; CUI, WENCHAO; ZHAO, YU; YAO, ZHIHAO
To: VMWARE, INC.
Reel/Frame 061526/0435 →
Continuity (1)
Related Publication 20230367726A1 · Nov 16, 2023