IP Library Granted Patent US 10,587,527
Granted Patent B1
US 10,587,527 · App. 15/783,222 · Granted Mar 10, 2020

Systems and methods for apportioning bandwidth in storage systems

Inventors: Sudhakar Paulzagade (Pune, IN); Shreenivas Baitule (Pune, IN)
Assignee: Veritas Technologies LLC
H04L47/527G06F3/061H04L47/781H04L67/325H04L67/1097
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,587,527
App. No.
15/783,222
Granted
Mar 10, 2020
Kind
B1
Abstract

The computer-implemented method for apportioning bandwidth in storage systems may include (i) identifying a plurality of storage media and at least one workload that is assigned a quantity of credits at the beginning of a predetermined time period that regulate a volume of bandwidth for input/output requests from the workload, (ii) detecting an input/output request from the workload, (iii) deducting, before fulfilling the input/output request, a number of credits from a current number of credits available to the workload based on an estimated quantity of bandwidth consumed by the input/output request, (iv) measuring an actual quantity of bandwidth consumed by the input/output request, and (v) adjusting the current number of credits available to the workload for the predetermined time period based on a difference between the estimated quantity of bandwidth and the actual quantity of bandwidth.

Claims (52)

1. A computer-implemented method for apportioning 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:

identifying:

a plurality of storage media; and

at least one workload that sends input/output requests to the plurality of storage media and that is assigned a quantity of credits at the beginning of a predetermined time period that regulate a volume of bandwidth for input/output requests from the workload that will be accepted by the plurality of storage media during the predetermined time period;

detecting an input/output request from the workload directed to a storage medium within the plurality of storage media during the predetermined time period;

deducting, before fulfilling the input/output request, a number of credits from a current number of credits available to the workload based on an estimated quantity of bandwidth consumed by the input/output request;

measuring, while fulfilling the input/output request, an actual quantity of bandwidth consumed by the input/output request; and

adjusting the current number of credits available to the workload for the predetermined time period based on a difference between the estimated quantity of bandwidth consumed by the input/output request and the actual quantity of bandwidth consumed by the input/output request.

2. The computer-implemented method of claim 1 , wherein adjusting the current number of credits available to the workload for the predetermined time period comprises increasing the current number of credits available to the workload in response to determining that the actual quantity of bandwidth consumed by the input/output request is less than the estimated quantity of bandwidth consumed by the input/output request.

3. The computer-implemented method of claim 1 , wherein adjusting the current number of credits available to the workload for the predetermined time period comprises decreasing the current number of credits available to the workload in response to determining that the actual quantity of bandwidth consumed by the input/output request is more than the estimated quantity of bandwidth consumed by the input/output request.

4. The computer-implemented method of claim 1 , wherein the estimated quantity of bandwidth consumed by the input/output request is calculated based at least in part on an average quantity of bandwidth consumed by each input/output request fulfilled by the plurality of storage media during a previous predetermined time period.

5. The computer-implemented method of claim 4 , further comprising:

calculating, at the end of the predetermined time period, an average quantity of bandwidth consumed by each input/output request fulfilled by the plurality of storage media during the predetermined time period; and

calculating a new estimated quantity of bandwidth consumed by each input/output request to the plurality of storage media based on the average quantity of bandwidth consumed by each input/output request fulfilled by the plurality of storage media during the predetermined time period.

6. The computer-implemented method of claim 1 , further comprising, at the beginning of a new predetermined time period that begins after the end of the predetermined time period, discarding the current number of credits available to the workload for the predetermined time period and assigning a new quantity of credits to the workload for the new predetermined time period.

7. The computer-implemented method of claim 1 , wherein the plurality of storage media comprises a plurality of storage media types, wherein each storage media type has a different expected latency for fulfilling input/output requests than at least one other storage media type within the plurality of storage media types.

8. The computer-implemented method of claim 1 , wherein the plurality of storage media comprises at least two of:

a storage medium configured to perform a deduplication operation on incoming data;

a storage medium configured to perform a compression operation incoming data; and

a storage medium configured to store incoming data without performing a deduplication operation or a compression operation on the incoming data.

9. The computer-implemented method of claim 1 , wherein the plurality of storage media comprises at least one storage medium with a different expected latency for fulfilling write requests than for fulfilling read requests.

10. A system for apportioning bandwidth in storage systems, the system comprising:

an identification module, stored in memory, that identifies:

a plurality of storage media;

at least one workload that sends input/output requests to the plurality of storage media and that is assigned a quantity of credits at the beginning of a predetermined time period that regulate a volume of bandwidth for input/output requests from the workload that will be accepted by the plurality of storage media during the predetermined time period;

a detection module, stored in memory, that detects an input/output request from the workload directed to a storage medium within the plurality of storage media during the predetermined time period;

a deduction module, stored in memory, that deducts, before fulfilling the input/output request, a number of credits from a current number of credits available to the workload based on an estimated quantity of bandwidth consumed by the input/output request;

a measurement module, stored in memory, that measures, while fulfilling the input/output request, an actual quantity of bandwidth consumed by the input/output request;

an adjustment module, stored in memory, that adjusts the current number of credits available to the workload for the predetermined time period based on a difference between the estimated quantity of bandwidth consumed by the input/output request and the actual quantity of bandwidth consumed by the input/output request; and

at least one physical processor configured to execute the identification module, the detection module, the deduction module, the measurement module, and the adjustment module.

11. The system of claim 10 , wherein the adjustment module adjusts the current number of credits available to the workload for the predetermined time period by increasing the current number of credits available to the workload in response to determining that the actual quantity of bandwidth consumed by the input/output request is less than the estimated quantity of bandwidth consumed by the input/output request.

12. The system of claim 10 , wherein the adjustment module adjusts the current number of credits available to the workload for the predetermined time period by decreasing the current number of credits available to the workload in response to determining that the actual quantity of bandwidth consumed by the input/output request is more than the estimated quantity of bandwidth consumed by the input/output request.

13. The system of claim 10 , wherein the estimated quantity of bandwidth consumed by the input/output request is calculated based at least in part on an average quantity of bandwidth consumed by each input/output request fulfilled by the plurality of storage media during a previous predetermined time period.

14. The system of claim 13 , wherein the adjustment module:

calculates, at the end of the predetermined time period, an average quantity of bandwidth consumed by each input/output request fulfilled by the plurality of storage media during the predetermined time period; and

calculates a new estimated quantity of bandwidth consumed by each input/output request to the plurality of storage media based on the average quantity of bandwidth consumed by each input/output request fulfilled by the plurality of storage media during the predetermined time period.

15. The system of claim 10 , wherein the adjustment module, at the beginning of a new predetermined time period that begins after the end of the predetermined time period, discards the current number of credits available to the workload for the predetermined time period and assigns a new quantity of credits to the workload for the new predetermined time period.

16. The system of claim 10 , wherein the plurality of storage media comprises a plurality of storage media types, wherein each storage media type has a different expected latency for fulfilling input/output requests than at least one other storage media type within the plurality of storage media types.

17. The system of claim 10 , wherein the plurality of storage media comprises at least two of:

a storage medium configured to perform a deduplication operation on incoming data;

a storage medium configured to perform a compression operation incoming data; and

a storage medium configured to store incoming data without performing a deduplication operation or a compression operation on the incoming data.

18. The system of claim 10 , wherein the plurality of storage media comprises at least one storage medium with a different expected latency for fulfilling write requests than for fulfilling read requests.

19. 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:

identify:

a plurality of storage media; and

at least one workload that sends input/output requests to the plurality of storage media and that is assigned a quantity of credits at the beginning of a predetermined time period that regulate a volume of bandwidth for input/output requests from the workload that will be accepted by the plurality of storage media during the predetermined time period;

detect an input/output request from the workload directed to a storage medium within the plurality of storage media during the predetermined time period;

deduct, before fulfilling the input/output request, a number of credits from a current number of credits available to the workload based on an estimated quantity of bandwidth consumed by the input/output request;

measure, while fulfilling the input/output request, an actual quantity of bandwidth consumed by the input/output request; and

adjust the current number of credits available to the workload for the predetermined time period based on a difference between the estimated quantity of bandwidth consumed by the input/output request and the actual quantity of bandwidth consumed by the input/output request.

20. The non-transitory computer-readable medium of claim 19 , wherein the one or more computer-readable instructions cause the computing device to adjust the current number of credits available to the workload for the predetermined time period by increasing the current number of credits available to the workload in response to determining that the actual quantity of bandwidth consumed by the input/output request is less than the estimated quantity of bandwidth consumed by the input/output request.

Assignments (13)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2026
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 075377/0130 →
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0938 →
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 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
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 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 051594/0529 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0412 →
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 Aug 2, 2019
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 051594/0529 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Dec 4, 2017
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 044682/0967 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2017
From: PAULZAGADE, SUDHAKAR; BAITULE, SHREENIVAS
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 043859/0196 →
Cited By (2)
US 12,457,160 US 12,675,339