IP Library › Granted Patent US 10,719,245
Granted Patent B1
US 10,719,245 · App. 15/648,935 · Granted Jul 21, 2020

Transactional IO scheduler for storage systems with multiple storage devices

Inventors: Krishna Chaitanya Gudipati (Fremont, CA); Anil Ravindranath (Sunnyvale, CA); Rahul Ugale (Santa Clara, CA)
Assignee: EMC IP HOLDING COMPANY LLC
G06F3/0619G06F3/065G06F3/067G06F3/0689G06F9/4881
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,719,245
App. No.
15/648,935
Filed
Jul 13, 2017
Granted
Jul 21, 2020
Kind
B1
Art Unit
2132
USPC
711/114
Abstract

In one embodiment, a storage system includes a processor, a memory coupled to the processor to store instructions for execution, and an IO tagging module executed by the processor to determine a plurality of child IO requests required to complete a plurality of received IO request transactions and to tag the IO request transaction and/or the associated child IO requests with a tag identifier uniquely identifying the IO request transaction. The system includes an IO scheduler module executed by the processor to prioritize the IO request transactions according to a policy by grouping the child IO requests based on the associated tag identifier. The grouped child IO requests of the IO request transactions are serviced by a plurality of storage devices of the storage system for an optimal performance.

Claims (47)

1. A storage system comprising:

a processor;

a memory coupled to the processor to store instructions for execution;

an input/output (IO) tagging module executed by the processor to determine a plurality of child IO requests required to complete each of a plurality of received IO request transactions and to tag the associated child IO requests with a tag identifier uniquely identifying the IO request transaction so the child IO requests associated with each of the plurality of IO request transactions are identified and grouped by the tag identifier unique to each of the plurality of IO request transactions;

an IO scheduler module executed by the processor to prioritize an order of dispatching the plurality of IO request transactions, based at least on a service priority level associated with each of the IO request transaction and completeness of each of the IO request transactions, by grouping and prioritizing the child IO requests as a group based on the associated tag identifier; and

a plurality of storage devices to service the prioritized plurality of IO request transactions;

wherein the child IO requests of the IO request transactions are sent to the plurality of storage devices to be serviced based at least on the order of dispatching of the plurality of IO request transactions prioritized by the IO scheduler module.

2. The system of claim 1 , wherein the child IO requests of an IO request transaction are dispatched based on at least an arrival time of the IO request transaction such that IO request transactions with an earlier arrival time are serviced prior to IO request transactions with a later arrival time.

3. The system of claim 1 , wherein the IO scheduler module is to dynamically determining, at a point in time, completeness for each of the IO request transactions by a counter representing a number of child IO requests required to complete the IO request transaction, wherein the counter is decremented when an associated child IO request is complete.

4. The system of claim 3 , wherein completeness of an IO request transaction is dynamically determined by updating the counter representing a number of associated child IO requests which are completed.

5. The system of claim 4 , wherein the plurality of storage devices service the prioritized IO request transactions by dispatching child IO requests of the IO request transaction based on an arrival time and completeness of the IO request transaction.

6. The system of claim 5 , wherein dispatching child IO requests comprises identifying the child IO requests at an IO stack level of the plurality of storage devices based on the tag identifier associated with the child IO requests.

7. The system of claim 1 , wherein the child IO requests comprise:

a first child IO request to read/write a metadata segment at a first storage device; and

a second child IO request to read/write a data segment at a second storage device, wherein the first storage device is a different storage device than the second storage device.

8. A non-transitory machine-readable medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving a plurality of input/output (IO) request transactions at the storage system having a plurality of storage devices;

for each of the plurality of IO request transactions,

determining a plurality of child IO requests required to complete the IO request transaction;

tagging the associated child IO requests with a tag identifier uniquely identifying the IO request transaction so the child IO requests associated with the IO request transaction are identified and grouped by the tag identifier unique to the IO request transaction;

prioritizing an order of dispatching the plurality of IO request transactions, based at least on a service priority level associated with each of the IO request transaction and completeness of each of the IO request transactions, by grouping and prioritizing the child IO requests as a group based on the associated tag identifier; and

servicing the prioritized plurality of IO request transactions;

wherein the child IO requests of the IO request transactions are sent to the plurality of storage devices to be serviced based at least on the order of dispatching of the plurality of IO request transactions.

9. The medium of claim 8 , wherein the child IO requests of an IO request transaction are dispatched based on at least an arrival time of the IO request transaction such that IO request transactions with an earlier arrival time are serviced prior to IO request transactions with a later arrival time.

10. The medium of claim 8 , further comprising dynamically determining, at a point in time, completeness for each of the IO request transactions by a counter representing a number of child IO requests required to complete the IO request transaction, wherein the counter is decremented when an associated child IO request is complete.

11. The medium of claim 10 , wherein completeness of an IO request transaction is dynamically determined by updating the counter representing a number of associated child IO requests which are completed.

12. The medium of claim 11 , wherein servicing the prioritized IO request transactions comprises dispatching child IO requests of the IO request transaction based on an arrival time and completeness of the IO request transaction.

13. The medium of claim 12 , wherein dispatching child IO requests comprises identifying the child IO requests at an IO stack level of the plurality of storage devices based on the tag identifier associated with the child IO requests.

14. The medium of claim 8 , wherein the child IO requests comprise:

a first child IO request to read/write a metadata segment at a first storage device; and

a second child IO request to read/write a data segment at a second storage device, wherein the first storage device is a different storage device than the second storage device.

15. A computer-implemented method to prioritize input/output (IO) request transactions for a storage system, the method comprising:

receiving a plurality of IO request transactions at the storage system having a plurality of storage devices;

for each of the plurality of IO request transactions,

determining a plurality of child IO requests required to complete the IO request transaction;

tagging the associated child IO requests with a tag identifier uniquely identifying the IO request transaction so the child IO requests associated with the IO request transaction are identified and grouped by the tag identifier unique to the IO request transaction;

prioritizing an order of dispatching the plurality of IO request transactions, based at least on a service priority level associated with each of the IO request transaction and completeness of each of the IO request transactions, by grouping and prioritizing the child IO requests as a group based on the associated tag identifier; and

servicing the prioritized plurality of IO request transactions;

wherein the child IO requests of the IO request transactions are sent to the plurality of storage devices to be serviced based at least on the order of dispatching of the plurality of IO request transactions.

16. The medium of claim 15 , wherein the child IO requests of an IO request transaction are dispatched based on at least an arrival time of the IO request transaction such that IO request transactions with an earlier arrival time are serviced prior to IO request transactions with a later arrival time.

17. The computer-implemented method of claim 15 , further comprising dynamically determining, at a point in time, completeness for each of the IO request transactions by a counter representing a number of child IO requests required to complete the IO request transaction, wherein the counter is decremented when an associated child IO request is complete.

18. The computer-implemented method of claim 17 , wherein completeness of an IO request transaction is dynamically determined by updating the counter representing a number of associated child IO requests which are completed.

19. The computer-implemented method of claim 18 , wherein servicing the prioritized IO request transactions comprises dispatching child IO requests of the IO request transaction based on an arrival time and completeness of the IO request transaction.

20. The computer-implemented method of claim 19 , wherein dispatching child IO requests comprises identifying the child IO requests at an IO stack level of the plurality of storage devices based on the tag identifier associated with the child IO requests.

21. The computer-implemented method of claim 15 , wherein the child IO requests comprise:

a first child IO request to read/write a metadata segment at a first storage device; and

a second child IO request to read/write a data segment at a second storage device, wherein the first storage device is a different storage device than the second storage device.

Assignments (8)
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 (043775/0082) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060958/0468 →
RELEASE OF SECURITY INTEREST AT REEL 043772 FRAME 0750 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0606 →
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 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043772/0750 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 043775/0082 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2017
From: GUDIPATI, KRISHNA CHAITANYA; RAVINDRANATH, ANIL; UGALE, RAHUL
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043002/0409 →
Cited By (2)
US 12,430,217 US 12,487,859