IP Library › Granted Patent US 11,372,586
Granted Patent B2
US 11,372,586 · App. 16/878,444 · Granted Jun 28, 2022

System and method for regulating NVMe-oF command requests and data flow across a network with mismatched rates

Inventors: Brian Peter L'Ecuyer (Elk Grove, CA); Charles Tuffli (Roseville, CA); Steven Lahr (Roseville, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F3/0659G06F3/0613G06F3/0631G06F3/0653G06F3/0679
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,372,586
App. No.
16/878,444
Granted
Jun 28, 2022
Kind
B2
Abstract

One embodiment can provide a method and system for implementing flow control. During operation, a switch identifies a command from a host to access a storage device coupled to the switch. The switch queues the command in a command queue corresponding to the host. In response to determining that an amount of data pending transmission to the host from the storage device is below a predetermined threshold, the switch removes a command from the command queue and forwards the removed command to the storage device.

Claims (55)

1. A method, comprising:

receiving, by a switch coupling a plurality of hosts to a storage device, commands from the hosts to access the storage device;

queuing, at the switch, the commands from different hosts of the plurality of hosts in different host-specific command queues;

determining a total amount of data pending transmission to a respective host of the different hosts from the storage device based on entries in a corresponding host-specific work-request queue maintained by a controller of the storage device, wherein the corresponding host-specific work-request queue corresponds to the respective host, wherein a respective entry of the entries in the corresponding host-specific work-request queue indicates a length of a to-be-transmitted data frame, wherein the total amount of the data pending transmission is determined based on the length indicated by each of the entries;

in response to determining that the total amount of the data pending transmission is below a predetermined threshold, removing a command from a host-specific command queue corresponding to the respective host;

forwarding the removed command to the controller of the storage device;

creating, by the controller, one or more additional entries in the corresponding host-specific work-request queue, the one or more additional entries associated with the removed command forwarded to the controller; and

in response to determining that the total amount of the data pending transmission exceeds the predetermined threshold, stopping, at the switch, the command from the host-specific command queue from being forwarded to the controller.

2. The method of claim 1 , wherein a total number of host-specific command queues corresponds to a total number of the plurality of hosts coupled to the switch.

3. The method of claim 1 , wherein the predetermined threshold is determined based on a size of memory space allocated to the respective host by the storage device.

4. The method of claim 1 , comprising:

dividing a command received from the respective host into multiple smaller commands; and

placing the multiple smaller commands into the host-specific command queue corresponding to the respective host.

5. The method of claim 1 , wherein the respective entry in the corresponding host-specific work-request queue indicates a location of the to-be-transmitted data frame.

6. The method of claim 1 , comprising:

negotiating a link rate between the respective host and the storage device, wherein the respective host is coupled to the switch via a first communication link, wherein the storage device is coupled to the switch via a second communication link, and wherein the first and second communication links have different link rates; and

setting a starting value of a countdown timer based on the determined link rate and the length of the to-be-transmitted data frame.

7. The method of claim 6 , wherein the respective host and the storage device communicate with each other using a non-volatile memory express over fabric (NVMe-oF) technique, and wherein negotiating the link rate between the respective host and the storage device comprises exchanging information associated with the different link rates while performing an NVMe-oF connection establishment.

8. The method of claim 6 , wherein negotiating the link rate comprises:

determining, by a controller unit coupled to the switch, a link rate of the first communication link;

determining, by the controller unit, a link rate of the second communication link; and

determining the link rate between the respective host and the storage device based on the determined link rates of the first and second communication links.

9. The method of claim 6 , wherein the starting value of the countdown timer equals a duration needed for transmitting the to-be-transmitted data frame using the negotiated link rate.

10. The method of claim 6 , comprising:

running the countdown timer while transmitting the to-be-transmitted data frame to the respective host; and

waiting for the countdown timer to expire before transmitting a subsequent data frame corresponding to a next entry in the corresponding host specific work-request queue.

11. A computer system, comprising:

a processor; and

a memory storing instructions that when executed by the processor cause the processor to perform a method, the method comprising:

receiving, by a switch coupling a plurality of hosts to a storage device, commands from the hosts to access the storage device;

queuing, at the switch, the commands from different hosts of the plurality of hosts in different host-specific command queues;

determining a total amount of data pending transmission to a respective host of the different hosts from the storage device based on entries in a corresponding host-specific work-request queue maintained by a controller of the storage device, wherein the corresponding host-specific work-request queue corresponds to the respective host, wherein a respective entry of the entries in the corresponding host-specific work-request queue indicates a length of a to-be-transmitted data frame, wherein the total amount of the data pending transmission is determined based on the length indicated by each of the entries;

in response to determining that the total amount of the data pending transmission is below a predetermined threshold, removing a command from a host-specific command queue corresponding to the respective host;

forwarding the removed command to the controller of the storage device;

creating, by the controller, one or more additional entries in the corresponding host-specific work-request queue, the one or more additional entries associated with the removed command forwarded to the controller; and

in response to determining that the total amount of the data pending transmission exceeds the predetermined threshold, stopping, at the switch, the command from the host-specific command queue from being forwarded to the controller.

12. The computer system of claim 11 , wherein a total number of host-specific command queues corresponds to a total number of the plurality of hosts coupled to the switch.

13. The computer system of claim 11 , wherein the predetermined threshold is determined based on a size of memory space allocated to the respective host by the storage device.

14. The computer system of claim 11 , wherein the method further comprises:

dividing a command received from the respective host into multiple smaller commands; and

placing the multiple smaller commands into the host-specific command queue corresponding to the respective host.

15. The computer system of claim 11 ,

wherein the respective entry in the corresponding host-specific work-request queue indicates a location of the to-be-transmitted data frame.

16. The computer system of claim 11 , wherein the method further comprises:

negotiating a link rate between the storage device and the respective host, wherein the respective host is coupled to the switch via a first communication link, wherein the storage device is coupled to the switch via a second communication link, and wherein the first and second communication links have different link rates; and

setting a starting value of a countdown timer based on the determined link rate and the length of the to-be-transmitted data frame.

17. The computer system of claim 16 , wherein the respective host and the storage device communicate with each other using a non-volatile memory express over fabric (NVMe-oF) technique, and wherein negotiating the link rate between the respective host and the storage device comprises exchanging information associated with the different link rates while performing an NVMe-oF connection establishment.

18. The computer system of claim 16 , wherein the method further comprises:

determining, by a controller unit coupled to the switch, a link rate of the first communication link;

determining, by the controller unit, a link rate of the second communication link; and

determining the link rate between the storage device and the respective host based on the determined first and second communication link rates.

19. The computer system of claim 16 , wherein the starting value of the countdown timer equals a duration needed for transmitting the to-be-transmitted data frame using the negotiated link rate.

20. The computer system of claim 16 , wherein the method further comprises:

running the countdown timer while transmitting the to-be-transmitted data frame to the respective host; and

waiting for the countdown timer to expire before transmitting a subsequent data frame corresponding to a next entry in the corresponding host-specific work-request queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2020
From: L'ECUYER, BRIAN PETER; TUFFLI, CHARLES; LAHR, STEVEN
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 052715/0806 →
Continuity (1)
Related Publication 20210365209A1 · Nov 25, 2021