IP Library Granted Patent US 10,268,419
Granted Patent B1
US 10,268,419 · App. 15/499,334 · Granted Apr 23, 2019

Quality of service for storage system resources

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,268,419
App. No.
15/499,334
Granted
Apr 23, 2019
Kind
B1
Abstract

A hierarchy of multiple levels of storage resources and associated QOS (quality of service) limits and buckets of tokens may be specified. A different QOS limit may be applied to each individual storage resource. The buckets may denote current amounts of tokens available for consumption in connection with servicing I/O operations. Each bucket may denote a current amount of available tokens for a corresponding storage resource of included in the hierarchy. Processing may include receiving a first I/O operation directed to a first storage resource, and determining, in accordance with the buckets of available tokens, whether to service the first I/O operation.

Claims (40)

1. A method of processing I/O (input/output) operations comprising:

receiving a first I/O operation directed to a first storage resource, said first storage resource being included in a storage resource hierarchy comprising a plurality of levels of storage resources, wherein a plurality of buckets denote current amounts of tokens available for consumption in connection with servicing I/O operations, each of the plurality of buckets denoting a current amount of available tokens for a corresponding one of the storage resources included in the storage resource hierarchy; and

determining, in accordance with the plurality of buckets of available tokens for the plurality of levels of storage resources, whether to service the first I/O operation, wherein a first bucket of the plurality of buckets denotes the current amount of available tokens for the first storage resource and a second bucket of the plurality of buckets denotes the current amount of available tokens for a second storage resource, wherein servicing the first I/O operation includes consuming a first amount of available tokens of the first bucket and a second amount of available tokens of the second bucket, wherein determining whether to service the first I/O operation includes:

determining, in accordance with the first amount and the second amount, whether the current amount of available tokens in at least one of the first bucket and the second bucket is insufficient to service the first I/O operation and whether there is at least one available token in each of the first bucket and the second bucket; and

responsive to determining that the current amount of available tokens in at least one of the first bucket and the second bucket is insufficient to service the first I/O operation, and determining that there is at least one available token in each of the first bucket and the second bucket, servicing the first I/O operation by performing first processing.

2. The method of claim 1 , wherein first processing includes:

decrementing the current amount of available tokens in the first bucket by the first amount; and

decrementing the current amount of available tokens in the second bucket by the second amount.

3. The method of claim 2 , wherein said determining whether to service the first I/O operation includes:

if it is determined that there is not at least one available token in each of the first bucket and the second bucket, determining not to service the first I/O operation and placing the first I/O operation in a queue of pending I/O operations to be serviced at a later point in time.

4. The method of claim 3 , wherein the first I/O operation is serviced at a later point in time when there is at least one available token in each of the first bucket and the second bucket.

5. The method of claim 1 , wherein said determining whether to service the first I/O operation includes:

determining whether the current amount of available tokens in the first bucket is at least the first amount and whether the current amount of available tokens in the second bucket is at least the second amount; and

if it is determined that the current amount of available tokens in the first bucket is at least the first amount and that the current amount of available tokens in the second bucket is at least the second amount, performing second processing to service the first I/O operation, said second processing including:

decrementing the current amount of available tokens in the first bucket by the first amount; and

decrementing the current amount of available tokens in the second bucket by the second amount.

6. The method of claim 1 , wherein the first storage resource and the second storage resource are located in the storage resource hierarchy and wherein the second storage resource is located at a higher level in the storage resource hierarchy than the first storage resource.

7. The method of claim 6 , wherein said first storage resource is a virtual volume and the second storage resource is a storage container.

8. The method of claim 7 , wherein the first storage resource is a logical device or a file system, and the second storage resource is any of a storage pool or a RAID group.

9. The method of claim 7 , wherein the first storage resource is configured within, or using an allocated amount of, the second storage resource.

10. The method of claim 6 , wherein each available token in the first bucket and the second bucket represents any of: a single I/O operation, and a unit of storage read or written in connection with I/O operations.

11. The method of claim 1 , wherein the first I/O operation includes any of: reading data from the first storage resource, and writing data to the first storage resource.

12. The method of claim 1 , further comprising:

receiving a plurality of maximum limits for the plurality of levels of storage resources, wherein each of the plurality of maximum limits specifies a maximum consumption amount in a specified time period for a corresponding storage resource of the storage resource hierarchy; and

periodically incrementing the current amounts of available tokens of the plurality of buckets in accordance with the plurality of maximum limits.

13. The method of claim 1 , wherein the storage resource hierarchy includes at least three levels, wherein a third bucket of the plurality of buckets denotes the current amount of available tokens for a third storage resource, and wherein servicing the first I/O operation comprises:

consuming a third amount of available tokens of the third bucket.

14. The method of claim 13 , wherein the first storage resource, the second storage resource, and the third storage resource are located in the storage resource hierarchy, and wherein the second storage resource is located at a higher level in the storage resource hierarchy than the first storage resource, and the third storage resource is located at a higher level in the storage resource hierarchy than second storage resource, and wherein the first storage resource is configured using an allocated amount of the second storage resource, and wherein the second storage resource is configured using an allocated amount of the third storage resource.

15. A system comprising:

a processor; and

a memory comprising code stored therein that, when executed by the processor, performs a method of processing I/O (input/output) operations comprising:

receiving a first I/O operation directed to a first storage resource, said first storage resource being included in a storage resource hierarchy comprising a plurality of levels of storage resources, wherein a plurality of buckets denote current amounts of tokens available for consumption in connection with servicing I/O operations, each of the plurality of buckets denoting a current amount of available tokens for a corresponding one of the storage resources included in the storage resource hierarchy; and

determining, in accordance with the plurality of buckets of available tokens for the plurality of levels of storage resources, whether to service the first I/O operation, wherein a first bucket of the plurality of buckets denotes the current amount of available tokens for the first storage resource and a second bucket of the plurality of buckets denotes the current amount of available tokens for a second storage resource, wherein servicing the first I/O operation includes consuming a first amount of available tokens of the first bucket and a second amount of available tokens of the second bucket, wherein determining whether to service the first I/O operation includes:

determining, in accordance with the first amount and the second amount, whether the current amount of available tokens in at least one of the first bucket and the second bucket is insufficient to service the first I/O operation and whether there is at least one available token in each of the first bucket and the second bucket; and

responsive to determining that the current amount of available tokens in at least one of the first bucket and the second bucket is insufficient to service the first I/O operation, and determining that there is at least one available token in each of the first bucket and the second bucket, servicing the first I/O operation by performing first processing.

16. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing I/O (input/output) operations comprising:

receiving a first I/O operation directed to a first storage resource, said first storage resource being included in a storage resource hierarchy comprising a plurality of levels of storage resources, wherein a plurality of buckets denote current amounts of tokens available for consumption in connection with servicing I/O operations, each of the plurality of buckets denoting a current amount of available tokens for a corresponding one of the storage resources included in the storage resource hierarchy; and

determining, in accordance with the plurality of buckets of available tokens for the plurality of levels of storage resources, whether to service the first I/O operation, wherein a first bucket of the plurality of buckets denotes the current amount of available tokens for the first storage resource and a second bucket of the plurality of buckets denotes the current amount of available tokens for a second storage resource, wherein servicing the first I/O operation includes consuming a first amount of available tokens of the first bucket and a second amount of available tokens of the second bucket, wherein determining whether to service the first I/O operation includes:

determining, in accordance with the first amount and the second amount, whether the current amount of available tokens in at least one of the first bucket and the second bucket is insufficient to service the first I/O operation and whether there is at least one available token in each of the first bucket and the second bucket; and

responsive to determining that the current amount of available tokens in at least one of the first bucket and the second bucket is insufficient to service the first I/O operation, and determining that there is at least one available token in each of the first bucket and the second bucket, servicing the first I/O operation by performing first processing.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
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 (042769/0001) Recorded Apr 26, 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 (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
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 INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2017
From: HU, KENNETH; JIN, QI; WHITNEY, WILLIAM; OWEN, KARL M.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042167/0128 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2017
From: TYLIK, DMITRY
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042169/0567 →