IP Library Granted Patent US 11,531,493
Granted Patent B2
US 11,531,493 · App. 16/721,862 · Granted Dec 20, 2022

Request throttling in distributed storage systems

Inventors: Arne Vansteenkiste (Gentbrugge, BE); Sander De Dycker (Ghent, BE); Wim De Wispelaere (Ghent, BE); Joris Walraevens (Zottegem, BE); Dieter Fiems (Ghent, BE); Willem Mélange (Harelbeke, BE); Apoorv Saxena (Bareilly, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/067G06F3/0613G06F3/0653H04L47/215H04L67/1001
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 11,531,493
App. No.
16/721,862
Granted
Dec 20, 2022
Kind
B2
Abstract

The disclosed technology includes an example system that has a request throttling manager that is configured to receive a first file data request, queue the first file data request in a first request queue, and process the first file data request based on the first token bucket. The first token bucket includes a sufficient first quantity of first tokens to process the first file data request. The system further includes a storage manager configured to access one or more storage nodes of a plurality of storage nodes of a distributed storage system in response to the first file data request.

Claims (106)

1. A system, comprising:

a request throttling manager including a plurality of throttling paths, wherein:

each throttling path of the plurality of throttling paths corresponds to a priority class of file data requests and comprises:

a request queue configured to queue file data requests of that priority class;

a token bucket allocated tokens for processing file data requests of that priority class; and

a request gate configured to selectively pass, based on a quantity of tokens in the token bucket, file data requests to a corresponding storage manager for that priority class for processing; and

the request throttling manager is configured to:

receive a plurality of file data requests;

determine, based on priority classes of the plurality of file data requests, corresponding throttling paths from the plurality of throttling paths;

queue the plurality of file data requests in corresponding request queues of the corresponding throttling paths; and

pass, responsive to the token bucket of any throttling path including a sufficient quantity of tokens to process a next file data request of that priority class, the next file data request from that request queue through the request gate of that throttling path to the corresponding storage manager for that priority class;

a token manager configured to allocate a number of tokens to each token bucket based on an allocation of throughput to each throttling path of the plurality of throttling paths; and

a plurality of storage managers configured to access one or more storage nodes of a plurality of storage nodes of a distributed storage system, wherein:

each storage manager is configured to receive data requests from a corresponding throttling path in response to the file data requests passed by that throttling path; and

simultaneous processing of storage requests of different priority classes from different throttling paths by the plurality of storage managers allocates a total throughput of the plurality of storage nodes of the distributed storage system.

2. The system of claim 1 , wherein:

the plurality of file data requests includes a first file data request; and

the request throttling manager is further configured to:

determine, based on a first priority class of the first file data request, a first throttling path from the plurality of throttling paths;

queue the first file data request in a first request queue of the first throttling path; and

pass, responsive to a first token bucket of the first throttling path including a sufficient first quantity of first tokens to process the first file data request, the first file data request from the first request queue through a first request gate of the first throttling path to the corresponding storage manager.

3. The system of claim 2 , wherein:

the plurality of file data requests includes a second file data request; and

the request throttling manager is further configured to:

determine, based on a second priority class of the second file data request, a second throttling path from the plurality of throttling paths;

queue the second file data request in a second request queue of the second throttling path; and

pass, responsive to a second token bucket of the second throttling path including a sufficient second quantity of second tokens to process the second file data request, the second file data request from the second request queue through a second request gate of the second throttling path to the corresponding storage manager.

4. The system of claim 3 , wherein:

the first token bucket and the second token bucket are respectively configured with a first token bucket capacity and a second token bucket capacity;

the first token bucket capacity defines a maximum number of tokens that may be stored in the first token bucket; and

the second token bucket capacity defines a maximum number of tokens that may be stored in the second token bucket.

5. The system of claim 4 , wherein the token manager is further configured to:

monitor a token level of the first token bucket;

receive a replenishment set of tokens;

determine, based on the token level, that at least a portion of the tokens of the replenishment set of tokens exceeds the first token bucket capacity; and

distribute the at least the portion of the tokens of the replenishment set of tokens to the second token bucket.

6. The system of claim 3 , wherein the first request queue and the first token bucket operate independently of the second request queue and the second token bucket.

7. The system of claim 2 , further comprising a backend throughput manager, wherein:

the first token bucket is configured with a first token bucket capacity;

the first token bucket capacity defines a maximum number of tokens that may be stored in the first token bucket; and

the backend throughput manager is configured to vary the first token bucket capacity based on a throughput of the distributed storage system.

8. The system of claim 7 , wherein the throughput is defined by a throughput parameter that is independent of sizes of object requests received by the distributed storage system.

9. The system of claim 8 , wherein the backend throughput manager is further configured to determine the throughput parameter by:

determining a storage node throughput of each storage node of a set of storage nodes in the distributed storage system, the set of storage nodes including two or more storage nodes of the plurality of storage nodes of the distributed storage system;

determining a utilization rate of each storage node of the set of storage nodes, wherein the utilization rate is based on an idle time of each storage node of the set of storage nodes in the distributed storage system;

for each storage node of the set of storage nodes in the distributed storage system, generating an estimated preferred throughput per storage node based on the utilization rate;

calculating a backend throughput based on the storage node throughput of each storage node of the set of storage nodes;

adjusting the backend throughput based on one or more of a specific storage method and a specific retrieval method used by the distributed storage system; and

adjusting the backend throughput based on a desired load factor of the distributed storage system.

10. The system of claim 2 , wherein the first request queue is configured as one of a first-in first-out (FIFO) queue and a priority queue.

11. The system of claim 2 , wherein the first file data request further includes a class identifier that identifies a handling priority of the first file data request in the first request queue.

12. A computer-implemented method, comprising:

receiving, by an access node for a distributed storage system, a plurality of file data requests, wherein:

the access node includes a plurality of throttling paths;

each throttling path of the plurality of throttling paths corresponds to a different priority class of file data requests; and

each throttling path of the plurality of throttling paths comprises:

a request queue configured to queue file data requests of that priority class;

a token bucket allocated tokens for processing file data requests of that priority class; and

a request gate configured to selectively pass, based on a quantity of tokens in the token bucket, file data requests to a corresponding storage manager for that priority class for processing;

allocating a number of tokens to each token bucket based on an allocation of throughput to each throttling path of the plurality of throttling paths;

determining, based on priority classes of the plurality of file data requests, corresponding throttling paths from the plurality of throttling paths;

queueing the plurality of file data requests in corresponding request queues of the corresponding throttling paths;

passing, responsive to the token bucket of any throttling path including a sufficient quantity of tokens to process a next file data request as a next object data request, the next object data request from that request queue through the request gate of that throttling path to the corresponding storage manager for that priority class in the distributed storage system;

receiving, by the corresponding storage manager of a plurality of storage managers, data requests from a corresponding throttling path for that priority class in response to the file data requests passed by that throttling path; and

simultaneously processing, by the plurality of storage managers, storage requests of different priority classes from different throttling paths to allocate a total throughput of a plurality of storage nodes of the distributed storage system.

13. The computer-implemented method of claim 12 , wherein the plurality of file data requests includes a file data request, the method further comprising:

determining, based on a first priority class of the file data request, a first throttling path from the plurality of throttling paths;

queueing the file data request in a first request queue of the first throttling path; and

passing, responsive to a first token bucket of the first throttling path including a sufficient quantity of first tokens to process the first file data request as a first object data request, the first object data request from the first request queue through a first request gate of the first throttling path to a first storage manager for the first priority class in the distributed storage system.

14. The computer-implemented method of claim 13 , wherein the plurality of file data requests includes a second file data request, the method further comprising:

determining, based on a second priority class of the second file data request, a second throttling path from the plurality of throttling paths;

queueing the second file data request in a second request queue of the second throttling path; and

passing, responsive to a second token bucket of the second throttling path including a sufficient second quantity of second tokens to process the second file data request as a second object data request, the second object data request from the second request queue through a second request gate of the second throttling path to a second storage manager for the second priority class in the distributed storage system.

15. The computer-implemented method of claim 14 , wherein:

the first token bucket and the second token bucket are respectively configured with a first token bucket capacity and a second token bucket capacity;

the first token bucket capacity defines a maximum number of tokens that may be stored in the first token bucket; and

the second token bucket capacity defines a maximum number of tokens that may be stored in the second token bucket.

16. The computer-implemented method of claim 15 , further comprising:

monitoring a token level of the first token bucket;

receiving a replenishment set of tokens;

determining, based on the token level, that at least a portion of the tokens of the replenishment set of tokens exceeds the first token bucket capacity; and

distributing the at least the portion of the tokens of the replenishment set of tokens to the second token bucket.

17. The computer-implemented method of claim 13 , wherein:

the first token bucket is configured with a first token bucket capacity;

the first token bucket capacity defines a maximum number of tokens that may be stored in the first token bucket; and

the method further comprises varying the first token bucket capacity based on a throughput of the distributed storage system.

18. The computer-implemented method of claim 17 , wherein the throughput is defined by a throughput parameter that is independent of sizes of object requests received by the distributed storage system.

19. The computer-implemented method of claim 18 , further comprising determining the throughput parameter by:

determining a storage node throughput of each storage node of a set of storage nodes in the distributed storage system;

determining a utilization rate of each storage node of the set of storage nodes, wherein the utilization rate is based on an idle time of each storage node of the set of storage nodes in the distributed storage system;

for each storage node of the set of storage nodes in the distributed storage system, generating an estimated preferred throughput per storage node based on the utilization rate;

calculating a backend throughput based on the storage node throughput of each storage node of the set of storage nodes;

adjusting the backend throughput based on one or more of a specific storage method and a specific retrieval method used by the distributed storage system; and

adjusting the backend throughput based on a desired load factor of the distributed storage system.

20. A system, comprising:

an access node including a plurality of throttling paths, wherein each throttling path of the plurality of throttling paths corresponds to a priority class of file data requests and comprises:

a request queue configured to queue file data requests of that priority class;

a token bucket allocated tokens for processing file data requests of that priority class; and

a request gate configured to selectively pass, based on a quantity of tokens in the token bucket, file data requests to a corresponding storage manager for that priority class for processing;

means for receiving a plurality of file data requests;

means for allocating a number of tokens to each token bucket based on an allocation of throughput to each throttling path of the plurality of throttling paths;

means for determining, based on priority classes of the plurality of file data requests, corresponding throttling paths from the plurality of throttling paths;

means for queueing the plurality of file data requests in corresponding request queues of the corresponding throttling paths;

means for passing, responsive to the token bucket of any throttling path including a sufficient quantity of tokens to process a next file data request as a next object data request, the next object data request from that request queue through the request gate of that throttling path to the corresponding storage manager for that priority class in a distributed storage system;

means for receiving, by the corresponding storage manager of a plurality of storage managers, data requests from a corresponding throttling path for that priority class in response to the file data requests passed by that throttling path; and

means for simultaneously processing, by the plurality of storage managers, storage requests of different priority classes from different throttling paths to allocate a total throughput of a plurality of storage nodes of the distributed storage system.

Assignments (7)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052025 FRAME 0088 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0699 →
SECURITY INTEREST Recorded Feb 26, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052025/0088 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2020
From: VANSTEENKISTE, ARNE; DE DYCKER, SANDER; DE WISPELAERE, WIM
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 051642/0432 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2020
From: AMPLIDATA NV
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 051642/0650 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2020
From: WALRAEVENS, JORIS; FIEMS, DIETER; MÉLANGE, WILLEM; SAXENA, APOORV
To: AMPLIDATA NV
Reel/Frame 051642/0540 →
Continuity (1)
Related Publication 20210191650A1 · Jun 24, 2021
Cited By (2)
US 12,197,789 US 12,287,969