IP Library Granted Patent US 9,537,777
Granted Patent B1
US 9,537,777 · App. 14/672,696 · Granted Jan 3, 2017

Adjusting input/output operation arrival times to represent a token bucket that enforces maximum rate and burst size limits

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 9,537,777
App. No.
14/672,696
Granted
Jan 3, 2017
Kind
B1
Abstract

In-band, on the fly allocation of tokens to a token bucket that limits the rate at which input/output operations are performed on a storage resource according to a maximum rate limit, while also supporting a user-configurable burst size limit that allows for a temporary spike in the rate input/output operations are received for the storage resource. An input/output time parameter is adjusted in response to receipt of input/output operations, based on the arrival times of the input/output operations, the maximum rate limit, and the burst size limit, in order to automatically allocate and consume tokens for the token bucket without requiring a separate token allocation thread.

Claims (46)

1. A computer-implemented method of using an input/output time parameter to represent a number of tokens in a token bucket in order to enforce a maximum rate limit for input/output operations directed to a storage resource, comprising executing, on at least one processor, the steps of:

setting a minimum permitted input/output operation inter-arrival time period to an inverse of the maximum rate limit;

processing an initially received input/output operation by setting the input/output time parameter to an arrival time of the initial input/output operation; and

processing each subsequently received input/output operation by

setting an inter-arrival time period parameter to a difference between an arrival time of the received input/output operation and the input/output time parameter,

determining whether the inter-arrival time period parameter is less than the minimum permitted input/output operation inter-arrival time, and

in response to determining that the inter-arrival time period parameter is not less than the minimum permitted input/output operation inter-arrival time, determining that there is at least one token available in the token bucket and accordingly allowing the input/output operation to be performed on the storage resource, and decrementing the number of tokens in the token bucket by adding the minimum permitted input/output operation inter-arrival time to the input/output time parameter.

2. The method of claim 1 , wherein processing each subsequently received input/output operation further includes:

in response to determining that the inter-arrival time period parameter is less than the minimum permitted input/output operation inter-arrival time, determining that there is not at least one token available in the token bucket, and accordingly preventing the input/output operation from being performed on the storage resource.

3. The method of claim 1 , wherein processing each subsequently received input/output operation further includes:

in response to determining that the inter-arrival time period parameter is not less than the minimum permitted input/output operation inter-arrival time, and after decrementing the number of tokens in the token bucket by adding the minimum permitted input/output operation inter-arrival time to the input/output time parameter, limiting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by

comparing the input/output time parameter to the arrival time of the received input/output operation,

comparing a difference between the arrival time of the received input/output operation and the input/output time parameter to the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time, and

in response to determining that the value of the input/output time parameter is less than the arrival time of the received input/output operation and that the difference between the arrival time of the received input/output operation and the input/output time parameter is greater than the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time, setting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by setting the value of the input/output time parameter to the arrival time of the received input/output operation minus the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time.

4. The method of claim 1 , wherein processing the initially received input/output operation further includes setting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by subtracting the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time from the input/output time parameter.

5. A computerized system for using an input/output time parameter to represent a number of tokens in a token bucket in order to enforce a maximum rate limit for input/output operations directed to a storage resource, comprising:

at least one hardware processor;

a memory having program code stored thereon, wherein the program code, when executed by the processor, causes the processor to

set a minimum permitted input/output operation inter-arrival time period to an inverse of the maximum rate limit;

process an initially received input/output operation by setting the input/output time parameter to an arrival time of the initial input/output operation; and

process each subsequently received input/output operation by

setting an inter-arrival time period parameter to a difference between an arrival time of the received input/output operation and the input/output time parameter,

determining whether the inter-arrival time period parameter is less than the minimum permitted input/output operation inter-arrival time, and

in response to determining that the inter-arrival time period parameter is not less than the minimum permitted input/output operation inter-arrival time, determining that there is at least one token available in the token bucket and accordingly allowing the input/output operation to be performed on the storage resource, and decrementing the number of tokens in the token bucket by adding the minimum permitted input/output operation inter-arrival time to the input/output time parameter.

6. The system of claim 5 , wherein the program code, when executed on the processor, further causes the processor to process each subsequently received input/output operation further by, in response to determining that the inter-arrival time period parameter is less than the minimum permitted input/output operation inter-arrival time, determining that there is not at least one token available in the token bucket, and accordingly preventing the input/output operation from being performed on the storage resource.

7. The system of claim 5 , wherein the program code, when executed on the processor, causes the processor to further process each subsequently received input/output operation further by:

in response to determining that the inter-arrival time period parameter is not less than the minimum permitted input/output operation inter-arrival time, and after decrementing the number of tokens in the token bucket by adding the minimum permitted input/output operation inter-arrival time to the input/output time parameter, limiting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by

comparing the input/output time parameter to the arrival time of the received input/output operation,

comparing a difference between the arrival time of the received input/output operation and the input/output time parameter to the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time, and

in response to determining that the value of the input/output time parameter is less than the arrival time of the received input/output operation and that the difference between the arrival time of the received input/output operation and the input/output time parameter is greater than the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time, setting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by setting the value of the input/output time parameter to the arrival time of the received input/output operation minus the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time.

8. The system of claim 5 , wherein the program code, when executed on the processor, further causes the processor to process the initially received input/output operation by setting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by subtracting the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time from the input/output time parameter.

9. A non-transitory computer readable medium for using an input/output time parameter to represent a number of tokens in a token bucket in order to enforce a maximum rate limit for input/output operations directed to a storage resource, the non-transitory medium having instructions stored thereon, that when executed on a processor of a computer, perform the steps of:

setting a minimum permitted input/output operation inter-arrival time period to an inverse of the maximum rate limit;

processing an initially received input/output operation by setting the input/output time parameter to an arrival time of the initial input/output operation; and

processing each subsequently received input/output operation by

setting an inter-arrival time period parameter to a difference between an arrival time of the received input/output operation and the input/output time parameter,

determining whether the inter-arrival time period parameter is less than the minimum permitted input/output operation inter-arrival time, and

in response to determining that the inter-arrival time period parameter is not less than the minimum permitted input/output operation inter-arrival time, determining that there is at least one token available in the token bucket and accordingly allowing the input/output operation to be performed on the storage resource and decrementing the number of tokens in the token bucket by adding the minimum permitted input/output operation inter-arrival time to the input/output time parameter.

10. The non-transitory computer-readable medium of claim 9 , wherein the instructions stored thereon, when executed on a processor of a computer, further perform the step of processing each subsequently received input/output operation by:

in response to determining that the inter-arrival time period parameter is less than the minimum permitted input/output operation inter-arrival time, determining that there is not at least one token available in the token bucket, and accordingly preventing the input/output operation from being performed on the storage resource.

11. The non-transitory computer-readable medium of claim 9 , wherein the instructions stored thereon, when executed on a processor of a computer, further perform the step of processing each subsequently received input/output operation by:

in response to determining that the inter-arrival time period parameter is not less than the minimum permitted input/output operation inter-arrival time, and after decrementing the number of tokens in the token bucket by adding the minimum permitted input/output operation inter-arrival time to the input/output time parameter, limiting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by

comparing the input/output time parameter to the arrival time of the received input/output operation,

comparing a difference between the arrival time of the received input/output operation and the input/output time parameter to the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time, and

in response to determining that the value of the input/output time parameter is less than the arrival time of the received input/output operation and that the difference between the arrival time of the received input/output operation and the input/output time parameter is greater than the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time, setting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by setting the value of the input/output time parameter to the arrival time of the received input/output operation minus the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time.

12. The non-transitory computer-readable medium of claim 9 , wherein the instructions stored thereon, when executed on a processor of a computer, further perform the step of processing the initially received input/output operation by setting the number of tokens in the token bucket to the size of an input/output operation burst size limit for input/output operations directed to the storage resource by subtracting the result of multiplying the burst size limit and the minimum permitted input/output operation inter-arrival time from the input/output time parameter.

Assignments (5)
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2016
From: TOHMAZ, ABDUL S.; HU, KENNETH
To: EMC CORPORATION
Reel/Frame 038969/0463 →