IP Library Granted Patent US 10,282,220
Granted Patent B2
US 10,282,220 · App. 14/933,720 · Granted May 7, 2019

Dynamic allocation of queue depths for virtual functions in a converged infrastructure

Inventors: Krishnaprasad Koladi (Bangalore, IN); Chandrashekar Nelogal (Round Rock, TX); Karan Singh Gandhi (Gurgaon, IN); Kiran Kumar Devarapalli (Telangana, IN)
Assignee: Dell Products, L.P.
G06F9/455G06F9/4411
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 10,282,220
App. No.
14/933,720
Filed
Nov 5, 2015
Granted
May 7, 2019
Kind
B2
Art Unit
2199
USPC
718/100
Abstract

A method and an information handling system (IHS) dynamically modifies queue depth values based on changing relative workload demands of virtual functions. A controller, executing code of a queue depth profiler, determines, for each virtual function, an average number of total unfulfilled, outstanding requests. The controller compares values for an average number of total outstanding requests across the plurality of virtual functions. The controller determines a relative demand for request queue depth corresponding to each respective virtual function based on the compared values. The controller calculates desired queue depth values for each virtual function, based on the relative demand. The controller triggers completion of pending requests for a first processing state. In response to successful completion of the first processing state, the controller enables initiation of a second processing state in which request processing continues using the desired queue depth values.

Claims (66)

1. An information handling system comprising:

a processor;

a memory system comprising an operating system (OS) and at least one device driver;

a plurality of host devices communicating input/output (I/O) requests with a plurality of virtual functions, respectively, wherein each host device comprises a corresponding device driver;

a peripheral component interconnect express (PCIe) storage controller communicatively coupled to the plurality of host devices and comprising:

the plurality of virtual functions; and

a controller firmware comprising: a command monitoring module; a queue management module; and a queue depth profiler;

wherein the (PCIe) storage controller executes code of the controller firmware, which configures the (PCIe) storage controller to:

determine for each virtual function (VF), using the command monitoring module, a value for at least one parameter associated with unfulfilled, outstanding requests, the at least one parameter including a count of total outstanding requests;

compare parameter values associated with outstanding requests across the plurality of virtual functions;

determine a relative demand for request queue depth for each respective VF based on the compared parameter values;

determine whether a threshold change in relative demand for at least one VF is detected; and

in response to detecting the threshold change in relative demand for at least one VF:

calculate for each VF, based on the relative demand, desired queue depth values, each representing a maximum number of outstanding commands that can be allocated to a respective VF;

initiate a “quiesce I/O” mode and initiate completion of pending requests for a first processing state; and

in response to successful completion of the pending requests for the first processing state: updates queue depth values from previous queue depth values to the desired queue depth values; resumes I/O processing queues; and initiates a second processing state to continue processing requests using current, desired queue depth values.

2. The IHS of claim 1 , further comprising a Small Computer System Interface (SCSI) sub-system, wherein the controller:

maintains the current queue depth values from the first processing state in response to not detecting a threshold change in relative demand for at least one VF;

in response to a threshold change in relative demand for at least one VF being detected, invokes, via an OS device driver, a request for a change in queue depth for each of at least one VF to correspond with the relative demands for request queue depth for respective virtual functions;

wherein the invoked request enables a completion of pending requests for a first processing state that uses one of (a) previous queue depth values corresponding to previous demands for request queue depth and (b) default queue depth values;

in response to successful completion of the first processing state, updating respective queue depth values within a Small Computer System Interface (SCSI) sub-system that provides a mechanism for transferring data between host devices and storage; and

in response to detecting the updates, initiates the second processing state in which request queues are resumed to continue processing requests.

3. The IHS of claim 1 , wherein the queue depth profiler represents a first component having a profiling capability and the OS device drivers represent additional components having corresponding profiling capability, wherein the profiling capability enables detection of queue full conditions on a per virtual function basis, wherein the queue depth profiler and the OS device drivers enable cooperative, collaborative processes that perform queue depth measurement functions and provide profiling measurements.

4. The IHS of claim 1 , wherein the controller:

in response to a first relative demand for a first virtual function exhibiting at least a threshold increase compared with a second relative demand for a second virtual function during queue depth profiling, provides a first desired queue depth value for the first virtual function and a second desired queue depth value for the second virtual function during the second processing state, wherein the first desired queue depth value represents a net increase of queue depth relative to the second desired queue depth.

5. The IHS of claim 1 , wherein the controller executes code of the queue depth profiler, which configures the controller to enable queue depth profiling to be initiated by one of: (a) dynamic, on-demand user activation; and (b) a pre-configured setting to enable automatic execution at periodic intervals.

6. The IHS of claim 1 , wherein the controller:

selects a time-based profiling window during which profiling measurements are performed, wherein a profiling window can be configured to accommodate various different types of workload processing operations.

7. The IHS of claim 1 , wherein the controller:

determines parameter values for average total outstanding requests, minimum total outstanding requests and maximum total outstanding requests for each virtual function during a profiling window period.

8. The IHS of claim 1 , wherein the controller:

reconfigures, in a converged infrastructure of the IHS, the queue depth of the storage controller to modify queue depths of corresponding host devices, while avoiding at least one of (i) re-initializing respective OS device drivers and (ii) rebooting respective host devices.

9. The IHS of claim 1 , wherein the controller:

applies a priority weighting to processing commands from each virtual function depending on at least one of: (a) a queue depth assigned to each virtual function; and (b) a number of pending commands from each virtual function.

10. In an information handling system (IHS), a processor-implemented method comprising:

determining, for each virtual function, a value for at least one parameter associated with unfulfilled, outstanding requests, the at least one parameter including a count of total outstanding requests;

comparing parameter values associated with outstanding requests across the plurality of virtual functions;

determining a relative demand for request queue depth for each respective virtual function based on the compared parameter values;

determining whether a threshold change in relative demand for at least one virtual function (VF) is detected; and

in response to a threshold change in relative demand for at least one VF being detected:

calculating for each virtual function, based on the relative demand, desired queue depth values each representing a maximum number of outstanding commands that can be allocated to a respective VF;

initiating a “quiesce I/O” mode and initiating completion of pending requests for a first processing state; and

in response to successful completion of the pending requests for the first processing state:

updating queue depth values from previous queue depth values to the desired queue depth values;

resuming I/O processing queues; and

initiating a second processing state to continue processing requests using the desired queue depth values.

11. The method of claim 10 , further comprising:

maintaining the current queue depth values from the first processing state in response to not detecting a threshold change in relative demand for at least one VF;

in response to a threshold change in relative demand for at least one VF being detected, invoking via an operating system (OS) device driver a request for a change in queue depth for each of at least one virtual function to correspond with the relative demands for request queue depth for respective virtual functions;

wherein the invoked request enables a completion of pending requests for a first processing state that uses one of (a) previous queue depth values corresponding to previous demands for request queue depth and (b) default queue depth values;

wherein in response to successful completion of the first processing state, providing updates to respective queue depth values within a Small Computer System Interface (SCSI) sub-system that provides a standard for transferring data between host devices and storage;

in response to providing the updates, initiating the second processing state in which request queues are resumed to continue processing requests.

12. The method of claim 10 , further comprising:

detecting queue full conditions on a per virtual function basis, wherein a queue depth profiler and OS device drivers enable cooperative, collaborative processes that perform queue depth measurement functions and provide profiling measurements.

13. The method of claim 10 , further comprising:

in response to a first relative demand for a first virtual function exhibiting at least a threshold increase compared with a second relative demand for a second virtual function during queue depth profiling, providing a first desired queue depth value for the first virtual function and a second desired queue depth value for the second virtual function during the second processing state, wherein the first desired queue depth value represents a net increase of queue depth relative to the second desired queue depth.

14. The method of claim 10 , further comprising:

enabling queue depth profiling, using a queue depth profiler, to be initiated by one of: (a) dynamic, on demand user activation; and (b) a pre-configured setting to enable automatic execution at periodic intervals.

15. The method of claim 10 , further comprising:

selecting a time-based profiling window during which profiling measurements are performed, wherein a profiling window can be configured to accommodate various different types of workload processing operations.

16. The method of claim 10 , further comprising:

determining parameter values for average total outstanding requests, minimum total outstanding requests and maximum total outstanding requests for each virtual function during a profiling window period.

17. The method of claim 10 , further comprising:

reconfiguring, in a converged, unified computing infrastructure of the IHS, the queue depth of the storage controller to modify queue depths of corresponding host devices while avoiding at least one of (i) re-initializing respective OS device drivers and (ii) rebooting respective host devices.

18. The method of claim 10 , further comprising:

applying a priority weighting to processing commands from each virtual function depending on at least one of: (a) a queue depth assigned to each virtual function; and (b) a number of pending commands from each virtual function.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF REEL 037848 FRAME 0001 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0152 →
RELEASE OF REEL 037848 FRAME 0210 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040031/0725 →
RELEASE OF REEL 037847 FRAME 0843 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040017/0366 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2016
From: KOLADI, KRISHNAPRASAD; NELOGAL, CHANDRASHEKAR; GANDHI, KARAN SINGH; DEVARAPALLI, KIRAN KUMAR
To: DELL PRODUCTS, L.P.
Reel/Frame 038086/0143 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037848/0001 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037847/0843 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 037848/0210 →
Continuity (1)
Related Publication 20170134310A1 · May 11, 2017
Cited By (2)
US 12,647,477 US 12,675,338