IP Library Granted Patent US 10,095,422
Granted Patent B2
US 10,095,422 · App. 15/337,667 · Granted Oct 9, 2018

Systems and methods for allocating input/output bandwidth in storage systems

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,095,422
App. No.
15/337,667
Granted
Oct 9, 2018
Kind
B2
Abstract

The disclosed computer-implemented method for allocating input/output bandwidth in storage systems may include (1) allocating, in accordance with a pre-defined service-level agreement, an assigned amount of input/output bandwidth to an application that performs actions on a storage system, (2) receiving a request from the application to perform an input/output operation on the storage system, (3) identifying an amount of latency associated with fulfilling the input/output operation, (4) calculating, based at least in part on the amount of latency associated with fulfilling the input/output operation, an amount of input/output bandwidth consumed by the input/output operation, (5) deducting the amount of input/output bandwidth consumed by the input/output operation from the assigned amount of input/output bandwidth allocated to the application, and (6) allocating bandwidth to future input/output requests from the application from the remaining amount of input/output bandwidth allocated to the application. Various other methods, systems, and computer-readable media are also disclosed.

Claims (51)

1. A computer-implemented method for allocating input/output bandwidth in storage systems, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

allocating, in accordance with a pre-defined service-level agreement, an assigned amount of input/output bandwidth to an application that performs actions on a storage system;

receiving a request from the application to perform an input/output operation on the storage system;

identifying an amount of latency associated with fulfilling the input/output operation, wherein the amount of latency represents a severity of impact on the ability of the input/output system to fulfill other requests to perform input/output operations on the storage system;

calculating an amount of input/output bandwidth consumed by the input/output operation that is proportional to the latency associated with fulfilling the input/output operation instead of the size of the input/output operation;

deducting the amount of input/output bandwidth consumed by the input/output operation from the assigned amount of input/output bandwidth allocated to the application; and

allocating bandwidth to future input/output requests from the application from the remaining amount of input/output bandwidth allocated to the application.

2. The method of claim 1 , wherein identifying the amount of latency associated with fulfilling the input/output operation comprises measuring an amount of time taken to complete the input/output operation.

3. The method of claim 1 , wherein identifying the amount of latency associated with fulfilling the input/output operation comprises calculating an estimated amount of latency that will be induced by the input/output operation based at least in part on whether the input/output operation comprises a plurality of sequential input/output operations.

4. The method of claim 3 , wherein calculating the estimated amount of latency comprises calculating the estimated amount of latency based on previous observations of input/output operations that are similar to the input/output operation.

5. The method of claim 1 , wherein receiving the request from the application comprises receiving a request to perform a plurality of input/output operations.

6. The method of claim 5 , wherein receiving the request from the application comprises treating the plurality of input/output operations as a single input/output operation.

7. The method of claim 6 , wherein treating the plurality of input/output operations as a single input/output operation comprises:

calculating the total amount of input/output bandwidth consumed by the plurality of input/output operations; and

deducting the total amount of input/output bandwidth consumed by the plurality of input/output operations.

8. The method of claim 1 , wherein the request from the application comprises a request to perform at least one of:

a backup operation;

a restore operation;

a recovery operation; and

a replication operation.

9. The method of claim 1 , wherein allocating the assigned amount of input/output bandwidth to the application comprises allocating the assigned amount of input/output bandwidth based on both the number of applications that request input/output bandwidth from the storage system and the capacity of the storage system to perform input/output operations.

10. The method of claim 1 , wherein allocating bandwidth to future input/output requests from the application from the remaining amount of input/output bandwidth allocated to the application comprises preventing the application from performing at least one future input/output operation on the storage system in response to determining that the application has an insufficient amount of input/output bandwidth remaining to perform the future input/output operation.

11. The method of claim 1 , wherein:

allocating the assigned amount of input/output bandwidth to the application comprises allocating an assigned number of credits to the application;

calculating the amount of input/output bandwidth consumed by the input/output operation comprises converting the latency associated with fulfilling the input/output operation into a number of consumed credits that are consumed by the input/output operation; and

deducting the amount of input/output bandwidth consumed by the input/output operation comprises subtracting the number of consumed credits from the assigned number of credits.

12. The method of claim 11 , wherein converting the latency associated with fulfilling the input/output operation into a number of consumed credits comprises converting the latency associated with fulfilling the input/output operation based on a reference latency that represents one credit.

13. A system for allocating input/output bandwidth in storage systems, the system comprising:

an allocation module, stored in memory, that allocates, in accordance with a pre-defined service-level agreement, an assigned amount of input/output bandwidth to an application that performs actions on a storage system;

a receiving module, stored in memory, that receives a request from the application to perform an input/output operation on the storage system;

an identification module, stored in memory, that identifies an amount of latency associated with fulfilling the input/output operation, wherein the amount of latency represents a severity of impact on the ability of the input/output system to fulfill other requests to perform input/output operations on the storage system;

a calculation module, stored in memory, that calculates an amount of input/output bandwidth consumed by the input/output operation that is proportional to the latency associated with fulfilling the input/output operation instead of the size of the input/output operation;

a deduction module, stored in memory, that deducts the amount of input/output bandwidth consumed by the input/output operation from the assigned amount of input/output bandwidth allocated to the application; and

at least one physical processor configured to execute the allocation module, the receiving module, the identification module, the calculation module, and the deduction module.

14. The system of claim 13 , wherein the allocation module allocates bandwidth to future input/output requests from the application from the remaining amount of input/output bandwidth allocated to the application.

15. The system of claim 13 , wherein the identification module identifies the amount of latency associated with fulfilling the input/output operation by measuring an amount of time taken to complete the input/output operation.

16. The system of claim 13 , wherein the identification module identifies the amount of latency associated with fulfilling the input/output operation by calculating an estimated amount of latency that will be induced by the input/output operation based at least in part on whether the input/output operation comprises a plurality of sequential input/output operations.

17. The system of claim 16 , wherein the identification module calculates the estimated amount of latency by calculating the estimated amount of latency based on previous observations of input/output operations that are similar to the input/output operation.

18. The system of claim 13 , wherein the receiving module receives the request from the application by receiving a request to perform a plurality of input/output operations.

19. The system of claim 13 , wherein the request from the application comprises a request to perform at least one of:

a backup operation;

a restore operation;

a recovery operation; and

a replication operation.

20. A non-transitory computer-readable medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

allocate, in accordance with a pre-defined service-level agreement, an assigned amount of input/output bandwidth to an application that performs actions on a storage system;

receive a request from the application to perform an input/output operation on the storage system;

identify an amount of latency associated with fulfilling the input/output operation, wherein the amount of latency represents a severity of impact on the ability of the input/output system to fulfill other requests to perform input/output operations on the storage system;

calculate an amount of input/output bandwidth consumed by the input/output operation that is proportional to the latency associated with fulfilling the input/output operation instead of the size of the input/output operation;

deduct the amount of input/output bandwidth consumed by the input/output operation from the assigned amount of input/output bandwidth allocated to the application; and

allocate bandwidth to future input/output requests from the application from the remaining amount of input/output bandwidth allocated to the application.

Assignments (13)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0863 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Mar 1, 2017
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 041850/0511 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2016
From: PAULZAGADE, SUDHAKAR; WAKHARE, PRASANNA; PENDHARKAR, NIRANJAN
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 040161/0570 →