IP Library Granted Patent US 10,481,801
Granted Patent B1
US 10,481,801 · App. 15/902,670 · Granted Nov 19, 2019

Optimizing storage quality of service (SQOS) by dynamically determining and managing optimal queue depth and system capacity

Inventors: Shreenivas N. Baitule (Pune, IN); Sudhakar Paulzagade (Pune, IN)
Assignee: Veritas Technologies LLC
G06F3/061G06F3/0604G06F9/45558G06F3/067
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,481,801
App. No.
15/902,670
Granted
Nov 19, 2019
Kind
B1
Abstract

Various systems and methods are provided for optimizing Storage Quality of Service (SQoS) by dynamically determining and managing queue depth and system capacity in a computer storage system. In one embodiment, this functionality includes determining a queue depth value for a given epoch, and then advertising that queue depth value to one or more applications. Upon receiving a number of I/O operations that does not exceed the advertised queue depth, the storage tier processes those I/O operations. The system then evaluates the system capacity in light of the current queue depth value and other variables, such as the observed (or “seen”) latency, to determine whether the optimal queue depth value has been reached. Until the optimal queue depth value has been reached, the process outlined above is repeatedly iteratively (with dynamically increasing queue depth values) in each ensuing epoch until the optimal queue depth value is determined.

Claims (85)

1. A method comprising:

determining a first queue depth value;

processing a first number of I/O requests during a first epoch, wherein the first number of I/O requests does not exceed the first queue depth value;

evaluating the first queue depth value, wherein

the evaluating the first queue depth value comprises

determining a first latency value of a storage tier, wherein

the first latency value indicates an amount of time that is needed to process an I/O request in the storage tier, and

determining whether a system capacity increased during the first epoch, wherein

the determining whether the system capacity increased during the first epoch is based, at least in part, on the first latency value; and

in response to determining that the system capacity increased during the first epoch, dynamically determining a second queue depth value.

2. The method of claim 1 , wherein

the second queue depth value is determined by calculating a sum of the first queue depth value and a previous queue depth value, wherein

the previous queue depth value is greater than or equal to zero.

3. The method of claim 1 , further comprising

processing a second number of I/O requests during a second epoch, wherein

the second number of I/O does not exceed the second queue depth value;

evaluating the second queue depth value, wherein

the evaluating the second queue depth value comprises determining whether the system capacity increased during the second epoch; and

in response to determining that the system capacity increased during the second epoch, dynamically determining a third queue depth value.

4. The method of claim 3 , wherein

the third queue depth value is determined by calculating a sum of the first queue depth value and the second queue depth value.

5. The method of claim 1 , further comprising:

prior to the processing the first number of I/O requests, advertising the first queue depth value to one or more applications.

6. The method of claim 3 , further comprising

processing a third number of I/O requests during a third epoch, wherein the third number of I/O does not exceed the third queue depth value;

evaluating the third queue depth value, wherein

the evaluating the third queue depth value comprises determining whether the system capacity increased during the third epoch; and

in response to determining that the system capacity did not increase during the second epoch, dynamically determining a fourth queue depth value, wherein the fourth queue depth value is less than the third queue depth value.

7. A system comprising:

a microprocessor; and

a non-transient computer-readable storage medium, comprising computer instructions executable by the microprocessor, wherein the computer instructions are configured to perform a method comprising the steps of:

determining a first queue depth value;

processing a first number of I/O requests during a first epoch, wherein

the first number of I/O requests does not exceed the first queue depth value;

evaluating the first queue depth value, wherein

the evaluating the first queue depth value comprises

determining a first latency value of a storage tier, wherein

 the first latency value indicates an amount of time that is needed to process an I/O request in the storage tier, and

determining whether a system capacity increased during the first epoch, wherein

 the determining whether the system capacity increased during the first epoch is based, at least in part, on the first latency value; and

in response to determining that the system capacity increased during the first epoch, dynamically determining a second queue depth value.

8. The method of claim 7 , wherein

the second queue depth value is determined by calculating a sum of the first queue depth value and a previous queue depth value, wherein

the previous queue depth value is greater than or equal to zero.

9. The method of claim 7 , further comprising

processing a second number of I/O requests during a second epoch, wherein

the second number of I/O does not exceed the second queue depth value;

evaluating the second queue depth value, wherein

the evaluating the second queue depth value comprises determining whether the system capacity increased during the second epoch; and

in response to determining that the system capacity increased during the second epoch, dynamically determining a third queue depth value.

10. The method of claim 7 , further comprising:

prior to the processing the first number of I/O requests, advertising the first queue depth value to one or more applications.

11. The method of claim 9 , wherein

the third queue depth value is determined by calculating a sum of the first queue depth value and the second queue depth value.

12. The method of claim 9 , further comprising

processing a third number of I/O requests during a third epoch, wherein the third number of I/O does not exceed the third queue depth value;

evaluating the third queue depth value, wherein

the evaluating the third queue depth value comprises determining whether the system capacity increased during the third epoch; and

in response to determining that the system capacity did not increase during the second epoch, dynamically determining a fourth queue depth value, wherein the fourth queue depth value is less than the third queue depth value.

13. A computer program product, comprising a plurality of instructions stored on a non-transient computer-readable storage medium, wherein the instructions are configured to execute a method comprising the steps of:

determining a first queue depth value;

processing a first number of I/O requests during a first epoch, wherein the first number of I/O requests does not exceed the first queue depth value;

evaluating the first queue depth value, wherein

the evaluating the first queue depth value comprises

determining a first latency value of a storage tier, wherein

the first latency value indicates an amount of time that is needed to process an I/O request in the storage tier, and

determining whether a system capacity increased during the first epoch, wherein

the determining whether the system capacity increased during the first epoch is based, at least in part, on the first latency value; and

in response to determining that the system capacity increased during the first epoch, dynamically determining a second queue depth value.

14. The method of claim 13 , wherein

the second queue depth value is determined by calculating a sum of the first queue depth value and a previous queue depth value, wherein

the previous queue depth value is greater than or equal to zero.

15. The method of claim 13 , further comprising

processing a second number of I/O requests during a second epoch, wherein

the second number of I/O does not exceed the second queue depth value;

evaluating the second queue depth value, wherein

the evaluating the second queue depth value comprises determining whether the system capacity increased during the second epoch; and

in response to determining that the system capacity increased during the second epoch, dynamically determining a third queue depth value.

16. The method of claim 15 , wherein

the third queue depth value is determined by calculating a sum of the first queue depth value and the second queue depth value.

17. The method of claim 15 , further comprising

processing a third number of I/O requests during a third epoch, wherein the third number of I/O does not exceed the third queue depth value;

evaluating the third queue depth value, wherein

the evaluating the third queue depth value comprises determining whether the system capacity increased during the third epoch; and

in response to determining that the system capacity did not increase during the second epoch, dynamically determining a fourth queue depth value, wherein the fourth queue depth value is less than the third queue depth value.

Assignments (11)
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 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069697/0238 →
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 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
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 18, 2020
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 052189/0311 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2018
From: BAITULE, SHREENIVAS N.; PAULZAGADE, SUDHAKAR
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 045039/0157 →
Cited By (1)
US 12,411,712