IP Library Granted Patent US 11,221,975
Granted Patent B2
US 11,221,975 · App. 16/807,709 · Granted Jan 11, 2022

Management of shared resources in a software-defined storage environment

Inventors: Avi Puder (Zichron Yakov, IL); Itay Keller (Tel Aviv, IL); Galina Tcharny (Haifa, IL); Dvir Koren (Nahalal, IL); Jonathan Sahar (Haifa, IL); Benjamin Grimberg (Haifa, IL)
Assignee: EMC IP Holding Company LLC
G06F13/1668G06F9/5055
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,221,975
App. No.
16/807,709
Granted
Jan 11, 2022
Kind
B2
Abstract

A storage control system receives an I/O request from a client for accessing storage resources that are logically divided into device groups, and determines a resource token request value associated with the I/O request and a target device group to which the I/O request is directed. The storage control system determines a number of allowed resource tokens to allocate to the client as a function of (i) the resource token request value, (ii) a sum total of resource tokens requested by other clients for accessing the target device group, and (iii) a total amount of resource tokens currently allocated to the target device group to which the I/O request is directed. The storage control system sends the determined number of allowed resource tokens to the client to thereby enable the client to limit a number of inflight I/O requests that the client issues to the storage control system.

Claims (50)

1. A method, comprising:

receiving, by a storage control system, an input/output (I/O) request from a client application for accessing data storage resources controlled by the storage control system, wherein the data storage resources comprise storage devices which are logically divided by the storage control system into a plurality of storage device groups, wherein each storage device group of the plurality of storage device groups is dynamically allocated a corresponding amount of resource tokens by the storage control system based at least in part on relative workload demands of the storage device groups;

determining, by the storage control system, a resource token request value associated with the I/O request and (ii) a target storage device group of the plurality of storage device groups to which the I/O request is directed;

determining, by the storage control system, a number of allowed resource tokens to allocate to the client application, wherein the number of allowed resource tokens is determined as a function of (i) the resource token request value, (ii) a sum total of resource tokens requested by other client applications for accessing the target storage device group, and (iii) a total amount of resource tokens currently allocated to the target storage device group to which the I/O request is directed; and

sending to the client application, by the storage control system, the determined number of allowed resource tokens allocated to the client application to thereby enable the client application to limit a number of inflight I/O requests that the client application issues to the storage control system based on the number of allowed resource tokens allocated to the client application for accessing the target storage device group.

2. The method of claim 1 , wherein the number of allowed resource tokens allocated to the client application comprises a number of allowed I/O tokens, wherein the number of allowed I/O tokens is configured to limit an amount of I/O-related resources that are utilized to process I/O requests of the client application which are directed to the target storage device group.

3. The method of claim 1 , wherein the number of allowed resource tokens allocated to the client application comprises a number of allowed throughput tokens, wherein the number of allowed throughput tokens is configured to limit an amount of storage-related resources that are utilized to process I/O requests of the client application which are directed to the target storage device group.

4. The method of claim 3 , wherein one throughput token represents a predefined amount of data.

5. The method of claim 1 , wherein:

the resource token request value associated with the I/O request comprises an I/O token request value, wherein the I/O token request value represents a total amount of (i) current inflight I/O requests and (ii) accumulated I/O inflight requests of the client application which have not yet been sent; and

the number of allowed resource tokens allocated to the client application comprises a number of allowed I/O tokens, wherein the number of allowed I/O tokens represents a total number of inflight I/O requests the given client application can concurrently have in a next resource allocation cycle, wherein the total number of inflight requests comprises a total amount of (i) new inflight I/O requests that client application can send in the next resource allocation cycle and (ii) currently pending inflight I/O requests.

6. The method of claim 1 , wherein:

the resource token request value associated with the I/O request comprises a throughput token request value, wherein the throughput token request value represents a total amount of data associated with all inflight I/O requests of the client application; and

the number of allowed resource tokens allocated to the client application comprises a number of allowed throughput tokens, wherein the number of allowed throughput tokens represents a maximum amount of data that can be associated with all concurrent inflight I/O requests that are allocated to the given client application for a next resource allocation cycle.

7. The method of claim 1 , further comprising:

determining, by the storage control system, a current rank value of the client application;

adjusting, by the storage control system, the resource token request value associated with the I/O request of the client application based on the determined current rank value of the client application; and

determining, by the storage control system, the number of allowed resource tokens to allocate to the client application based on the adjusted resource token request value.

8. The method of claim 7 , wherein adjusting the resource token request value comprises reducing the resource token request value in proportion to a ratio of (i) the determined current rank value to (ii) a predefined maximum rank value.

9. The method of claim 1 , wherein the plurality of storage device groups comprises at least a first storage device group comprising storage devices of a first device type, and a second storage device group comprising storage devices of a second device type, which is different from the first device type; and wherein the method further comprises:

determining, by the storage control system, a respective maximum storage device group token value for each storage device group of the plurality of storage device groups, wherein the maximum storage device group token value for a given storage device group represents a maximum number of resource tokens that are allocated to the given storage device group, out of a total amount of available resource tokens of the data storage system, based on a maximum amount of concurrent I/O operations that the given storage device group can perform based on the type of storage devices of the given storage device group and a number of storage devices within the given storage device group.

10. An article of manufacture comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code is executable by one or more processors to implement a method comprising:

receiving, by a storage control system, an input/output (I/O) request from a client application for accessing data storage resources controlled by the storage control system, wherein the data storage resources comprise storage devices which are logically divided by the storage control system into a plurality of storage device groups, wherein each storage device group of the plurality of storage device groups is dynamically allocated a corresponding amount of resource tokens by the storage control system based at least in part on relative workload demands of the storage device groups;

determining, by the storage control system, a resource token request value associated with the I/O request and (ii) a target storage device group of the plurality of storage device groups to which the I/O request is directed;

determining, by the storage control system, a number of allowed resource tokens to allocate to the client application, wherein the number of allowed resource tokens is determined as a function of (i) the resource token request value, (ii) a sum total of resource tokens requested by other client applications for accessing the target storage device group, and (iii) a total amount of resource tokens currently allocated to the target storage device group to which the I/O request is directed; and

sending to the client application, by the storage control system, the determined number of allowed resource tokens allocated to the client application to thereby enable the client application to limit a number of inflight I/O requests that the client application issues to the storage control system based on the number of allowed resource tokens allocated to the client application for accessing the target storage device group.

11. The article of manufacture of claim 10 , wherein the number of allowed resource tokens allocated to the client application comprises a number of allowed I/O tokens, wherein the number of allowed I/O tokens is configured to limit an amount of I/O-related resources that are utilized to process I/O requests of the client application which are directed to the target storage device group.

12. The article of manufacture of claim 10 , wherein the number of allowed resource tokens allocated to the client application comprises a number of allowed throughput tokens, wherein the number of allowed throughput tokens is configured to limit an amount of storage-related resources that are utilized to process I/O requests of the client application which are directed to the target storage device group, wherein one throughput token represents a predefined amount of data.

13. The article of manufacture of claim 10 , wherein:

the resource token request value associated with the I/O request comprises an I/O token request value, wherein the I/O token request value represents a total amount of (i) current inflight I/O requests and (ii) accumulated I/O inflight requests of the client application which have not yet been sent; and

the number of allowed resource tokens allocated to the client application comprises a number of allowed I/O tokens, wherein the number of allowed I/O tokens represents a total number of inflight I/O requests the given client application can concurrently have in a next resource allocation cycle, wherein the total number of inflight requests comprises a total amount of (i) new inflight I/O requests that client application can send in the next resource allocation cycle and (ii) currently pending inflight I/O requests.

14. The article of manufacture of claim 10 , wherein:

the resource token request value associated with the I/O request comprises a throughput token request value, wherein the throughput token request value represents a total amount of data associated with all inflight I/O requests of the client application; and

the number of allowed resource tokens allocated to the client application comprises a number of allowed throughput tokens, wherein the number of allowed throughput tokens represents a maximum amount of data that can be associated with all concurrent inflight I/O requests that are allocated to the given client application for a next resource allocation cycle.

15. The article of manufacture of claim 10 , further comprising:

determining, by the storage control system, a current rank value of the client application;

adjusting, by the storage control system, the resource token request value associated with the I/O request of the client application based on the determined current rank value of the client application, wherein adjusting the resource token request value comprises reducing the resource token request value in proportion to a ratio of (i) the determined current rank value to (ii) a predefined maximum rank value; and

determining, by the storage control system, the number of allowed resource tokens to allocate to the client application based on the adjusted resource token request value.

16. The article of manufacture of claim 10 , wherein the plurality of storage device groups comprises at least a first storage device group comprising storage devices of a first device type, and a second storage device group comprising storage devices of a second device type, which is different from the first device type; and wherein the method further comprises:

determining, by the storage control system, a respective maximum storage device group token value for each storage device group of the plurality of storage device groups, wherein the maximum storage device group token value for a given storage device group represents a maximum number of resource tokens that are allocated to the given storage device group, out of a total amount of available resource tokens of the data storage system, based on a maximum amount of concurrent I/O operations that the given storage device group can perform based on the type of storage devices of the given storage device group and a number of storage devices within the given storage device group.

17. A server node, comprising:

at least one processor; and

system memory configured to store program code, wherein the program code is executable by the at least one processor to implement a storage control system which is configured to:

receive an input/output (I/O) request from a client application for accessing data storage resources controlled by the storage control system, wherein the data storage resources comprise storage devices which are logically divided by the storage control system into a plurality of storage device groups, wherein each storage device group of the plurality of storage device groups is dynamically allocated a corresponding amount of resource tokens by the storage control system based at least in part on relative workload demands of the storage device groups;

determine (i) a resource token request value associated with the I/O request and (ii) a target storage device group of the plurality of storage device groups to which the I/O request is directed;

determine a number of allowed resource tokens to allocate to the client application, wherein the number of allowed resource tokens is determined as a function of (i) the resource token request value, (ii) a sum total of resource tokens requested by other client applications for accessing the target storage device group, and (iii) a total amount of resource tokens currently allocated to the target storage device group to which the I/O request is directed; and

send to the client application, the determined number of allowed resource tokens allocated to the client application to thereby enable the client application to limit a number of inflight I/O requests that the client application issues to the storage control system based on the number of allowed resource tokens allocated to the client application for accessing the target storage device group.

18. The server node of claim 17 , wherein the number of allowed resource tokens allocated to the client application comprises a number of allowed I/O tokens, wherein the number of allowed I/O tokens is configured to limit an amount of I/O-related resources that are utilized to process I/O requests of the client application which are directed to the target storage device group.

19. The server node of claim 17 , wherein the number of allowed resource tokens allocated to the client application comprises a number of allowed throughput tokens, wherein the number of allowed throughput tokens is configured to limit an amount of storage-related resources that are utilized to process I/O requests of the client application which are directed to the target storage device group.

20. The server node of claim 17 , wherein the storage control system comprises a software-defined storage control system.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 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 060438/0742 →
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 (052851/0081) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0441 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
SECURITY INTEREST Recorded Jun 5, 2020
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 053311/0169 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2020
From: PUDER, AVI; KELLER, ITAY; TCHARNY, GALINA; KOREN, DVIR; SAHAR, JONATHAN; GRIMBERG, BENJAMIN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052007/0839 →