IP Library Granted Patent US 9,626,120
Granted Patent B1
US 9,626,120 · App. 14/979,628 · Granted Apr 18, 2017

Systems and methods for dynamically adjusting batch request sizes

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,626,120
App. No.
14/979,628
Granted
Apr 18, 2017
Kind
B1
Abstract

The disclosed computer-implemented method for dynamically adjusting batch request sizes may include (1) identifying a storage system that accepts batched requests for data stored within the storage system, (2) measuring the latency for at least one request sent to the storage system to retrieve a portion of the data stored within the storage system, (3) adjusting, based on the latency of the request, a batch size for the batched requests sent to the storage system, and (4) sending a batched request of the adjusted batched size to the storage system. Various other methods, systems, and computer-readable media are also disclosed.

Claims (64)

1. A computer-implemented method for dynamically adjusting batch request sizes, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a storage system that accepts batched requests for data stored within the storage system;

measuring a latency for at least one request sent to the storage system to retrieve a portion of the data stored within the storage system;

configuring a batched request for the storage system by:

determining that a plurality of requests in the batched request are requesting data stored in a plurality of data containers within the storage system;

sorting the requests in the batched request according to the data containers the requests are requesting the data from; and

assigning the sorted requests to a plurality of threads in a multi-threaded system, wherein each request to the same data container is assigned to the same thread within the plurality of threads; and

adjusting, based on the latency of the request, a batch size for the batched request; and

sending the configured batched request to the storage system.

2. The computer-implemented method of claim 1 , wherein adjusting the batch size comprises at least one of:

increasing the batch size in response to determining that the latency of the request is higher than a previously measured latency that was previously used to set the batch size; and

decreasing the batch size in response to determining that the latency of the request is lower than a previously measured latency that was previously used to set the batch size.

3. The computer-implemented method of claim 1 , further comprising:

determining that a certain request in the batched request is expected to take longer than a predetermined time limit to return;

assigning the certain request to a subsequent batched request; and

returning all requests in the batched request except the certain request.

4. The computer-implemented method of claim 3 , wherein the certain request is expected to take longer than the predetermined time limit because the certain request is expected to pass through a plurality of layers of systems.

5. The computer-implemented method of claim 3 , wherein the certain request is expected to take longer than the predetermined time limit because the certain request shares at least one characteristic with at least one previous request that took longer than the predetermined time limit.

6. The computer-implemented method of claim 5 , further comprising recording characteristics of requests that take longer than the predetermined time in order to predict future requests that are expected take longer than the predetermined time limit.

7. The computer-implemented method of claim 1 , wherein:

the storage system comprises a backup storage system; and

the batched request comprises a batch of read requests made in order to provision a system from the backup storage system.

8. A system for dynamically adjusting batch request sizes, the system comprising:

an identification module, stored in memory, that identifies a storage system that accepts batched requests for data stored within the storage system;

a measuring module, stored in memory, that measures a latency for at least one request sent to the storage system to retrieve a portion of the data stored within the storage system;

an adjusting module, stored in memory, that configures a batched request for the storage system by:

adjusting, based on the latency of the request, a batch size for the batched request;

determining that a plurality of requests in the batched request are requesting data stored in a plurality of data containers within the storage system;

sorting the requests in the batched request according to the data containers the requests are requesting the data from; and

assigning the sorted requests to a plurality of threads in a multi-threaded system, wherein each request to the same data container is assigned to the same thread within the plurality of threads;

a sending module, stored in memory, that sends the configured batched request to the storage system; and

at least one physical processor configured to execute the identification module, the measuring module, the adjusting module, and the sending module.

9. The system of claim 8 , wherein the adjusting module adjusts the batch size by at least one of:

increasing the batch size in response to determining that the latency of the request is higher than a previously measured latency that was previously used to set the batch size; and

decreasing the batch size in response to determining that the latency of the request is lower than a previously measured latency that was previously used to set the batch size.

10. The system of claim 8 , further comprising a batch adjustment module, stored in memory, that:

determines that a certain request in the batched request is expected to take longer than a predetermined time limit to return;

assigns the certain request to a subsequent batched request; and

returns all requests in the batched request except the certain request.

11. The system of claim 10 , wherein the certain request is expected to take longer than the predetermined time limit because the certain request is expected to pass through a plurality of layers of systems.

12. The system of claim 8 , wherein the batch size comprises a time interval during which all requests received are placed into a same batch.

13. The system of claim 8 , wherein the batch size comprises a set number of requests.

14. The system of claim 8 , wherein:

the storage system comprises a backup storage system; and

the batched request comprises a batch of read requests made in order to provision a system from the backup storage system.

15. 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 storage system that accepts batched requests for data stored within the storage system;

measure a latency for at least one request sent to the storage system to retrieve a portion of the data stored within the storage system;

configure a batched request for the storage system by:

adjusting, based on the latency of the request, a batch size for the batched requests sent to the storage system;

determining that a plurality of requests in the batched request are requesting data stored in a plurality of data containers within the storage system;

sorting the requests in the batched request according to the data containers the requests are requesting the data from; and

assigning the sorted requests to a plurality of threads in a multi-threaded system, wherein each request to the same data container is assigned to the same thread within the plurality of threads; and

send the configured batched request to the storage system.

16. The non-transitory computer-readable medium of claim 15 , wherein the one or more computer-readable instructions cause the computing device to adjust the batch size by at least one of:

increasing the batch size in response to determining that the latency of the request is higher than a previously measured latency that was previously used to set the batch size; and

decreasing the batch size in response to determining that the latency of the request is lower than a previously measured latency that was previously used to set the batch size.

17. The non-transitory computer-readable medium of claim 15 , wherein the one or more computer-readable instructions cause the computing device to:

determine that a certain request in the batched request is expected to take longer than a predetermined time limit to return;

assign the certain request to a subsequent batched request; and

return all requests in the batched request except the certain request.

18. The non-transitory computer-readable medium of claim 17 , wherein the certain request is expected to take longer than the predetermined time limit because the certain request is expected to pass through a plurality of layers of systems.

19. The non-transitory computer-readable medium of claim 15 , wherein the one or more computer-readable instructions cause the computing device to measure the latency for the at least one request by measuring the latency as a number of input/output operations per second performed on the storage system over a predetermined time period.

20. The non-transitory computer-readable medium of claim 19 , wherein the one or more computer-readable instructions cause the computing device to measure the latency for the at least one request by measuring the latency at predetermined intervals.

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 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069632/0613 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: SYMANTEC CORPORATION
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 044362/0859 →
PATENT SECURITY AGREEMENT Recorded Nov 23, 2016
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040679/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2015
From: JIA, YINGSONG; JIA, HONG YU
To: SYMANTEC CORPORATION
Reel/Frame 037362/0540 →