IP Library › Granted Patent US 11,936,568
Granted Patent B2
US 11,936,568 · App. 17/532,476 · Granted Mar 19, 2024

Stream allocation using stream credits

Inventor: Keyur B. Desai (Cary, NC)
Assignee: EMC IP HOLDING COMPANY LLC
H04L47/39H04L47/806H04L65/612H04L65/80
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,936,568
App. No.
17/532,476
Granted
Mar 19, 2024
Kind
B2
Abstract

Systems and methods for allocating resources are disclosed. Resources such as streams are allocated using a stream credit system. Credits are issued to the clients in a manner that ensure the system is operating in a safe allocation state. The credits can be used not only to allocate resources but also to throttle clients where necessary. Credits can be granted fully, partially, and in a number greater than a request. Zero or negative credits can also be issued to throttle clients.

Claims (60)

1. A method for allocating resources of a cluster of servers to clients when performing a data protection operation, the method comprising:

predetermining a maximum stream credits associated with each of the clients;

receiving a request for stream credits from a client at the cluster, wherein the stream credits are for using streams provided by the cluster of servers;

determining, by the cluster, an allocation state of the cluster in response to the request for stream credits from the client, wherein determining the allocation state includes:

determining a number of streams available from the servers;

assuming that the request for stream credits is granted; and

determining whether the client and at least one of the other clients could request and use their maximum stream credits in succession;

wherein the allocation state is safe when each of the clients including the requesting client could request and use their maximum stream credits in succession, and wherein the allocation state is unsafe when the resources associated with the maximum stream credits of each of the clients cannot be requested and used in succession;

and

issuing the stream credits in response to the request for stream credits based on the allocation state.

2. The method of claim 1 , further comprising streaming one or more streams to the clients, wherein each of the one or more streams consumes resources of the cluster of servers.

3. The method of claim 1 , further comprising determining a current allocation matrix that identifies streams currently allocated to each of the clients from each of the servers in the cluster of servers.

4. The method of claim 3 , further comprising determining a current demand matrix that specifies a maximum number of streams that can be requested by each of the clients from each of the servers in the cluster of servers.

5. The method of claim 1 , further comprising determining a current need matrix based on the current demand matrix and the current allocation matrix, wherein the current need matrix identifies a number of stream credits that each of the clients can request to acquire their maximum number of stream credits.

6. The method of claim 1 , further comprising defining a maximum number of streams for allocation for each of the servers, wherein the maximum number of streams for each of the servers is based on a number of write or read parameters.

7. The method of claim 1 , wherein each stream credit corresponds to a percentage of a CPU (central processing unit), percent of CPU consumed by a data transmission rate, or a percent of CPU consumed by a predetermined number of writes.

8. The method of claim 1 , wherein issuing the stream credits based on the allocation state includes at least one of:

issuing stream credits in an amount equal to the request when the allocation state is safe;

and when the allocation state is unsafe,

issuing stream credits in an amount greater than the request;

issuing stream credits in an amount greater than zero and less than the request;

issuing zero stream credits; or

issuing negative stream credits.

9. The method of claim 1 , further comprising throttling the client when the allocation state is not safe until the allocation state is safe or self-throttling by the clients.

10. A non-transitory computer readable medium including instructions for implementing a method for allocating resources of a cluster of servers when performing a data protection operation, the method comprising:

predetermining a maximum stream credits associated with each of the clients;

receiving a request for stream credits from a client at the cluster, wherein the stream credits are for using streams provided by the cluster of servers;

determining, by the cluster, an allocation state of the cluster in response to the request for stream credits from the client, wherein determining the allocation state includes:

determining a number of streams available from the servers;

assuming that the request for stream credits is granted; and

determining whether the client and at least one of the other clients could request and use their maximum stream credits in succession;

wherein the allocation state is safe when each of the clients including the requesting client could request and use their maximum stream credits in succession, and wherein the allocation state is unsafe when the resources associated with the maximum stream credits of each of the clients cannot be requested and used in succession;

and

issuing the stream credits in response to the request for stream credits based on the allocation state.

11. The non-transitory computer readable medium of claim 10 , further comprising streaming one or more streams to the clients, wherein each of the one or more streams consumes resources of the cluster of servers.

12. The non-transitory computer readable medium of claim 10 , further comprising determining a current allocation matrix that identifies streams currently allocated to each of the clients from each of the servers in the cluster of servers.

13. The non-transitory computer readable medium of claim 12 , further comprising determining a current demand matrix that specifies a maximum number of streams that can be requested by each of the clients from each of the servers in the cluster of servers.

14. The non-transitory computer readable medium of claim 10 , further comprising determining a current need matrix based on the current demand matrix and the current allocation matrix, wherein the current need matrix identifies a number of stream credits that each of the clients can request to acquire their maximum number of stream credits.

15. The non-transitory computer readable medium of claim 10 , further comprising defining a maximum number of streams for allocation for each of the servers, wherein the maximum number of streams for each of the servers is based on a number of processors or cores.

16. The non-transitory computer readable medium of claim 10 , wherein each stream credit corresponds to a percentage of a CPU (central processing unit), percent of CPU consumed by a data transmission rate, or a percent of CPU consumed by a predetermined number of writes.

17. The non-transitory computer readable medium of claim 10 , wherein issuing the stream credits based on the allocation state includes at least one of:

issuing stream credits in an amount equal to the request when the allocation state is safe;

and when the allocation state is unsafe,

issuing stream credits in an amount greater than the request;

issuing stream credits in an amount greater than zero and less than the request;

issuing zero stream credits; or

issuing negative stream credits.

18. The non-transitory computer readable medium of claim 10 , further comprising throttling the client when the allocation state is not safe until the allocation state is safe or self-throttling by the clients.

19. A method for allocating resources of a cluster of servers to clients when performing a data protection operation, the method comprising:

predetermining a maximum stream credits associated with each of the clients;

receiving a first request for stream credits from a first client at the cluster, wherein the stream credits are for using streams provided by the cluster of servers;

determining, by the cluster, an allocation state of the cluster in response to the request for stream credits from the first client, wherein determining the allocation state includes:

determining a number of streams available from the servers;

assuming that the request for stream credits is granted; and

determining whether a second client could request and use their maximum stream credits;

wherein the allocation state is safe when each of the clients including the requesting client could request and use their maximum stream credits in succession, and wherein the allocation state is unsafe when the resources associated with the maximum stream credits of each of the clients cannot be requested and used in succession;

and

issuing the stream credits in response to the request for stream credits based on the allocation state.

20. The method of claim 19 , further comprising:

wherein the allocation state is safe when all other clients can request and use their maximum allowed stream credits when considered individually.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2021
From: DESAI, KEYUR B.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 058183/0455 →
Continuity (2)
Continuation 16154475 · Oct 8, 2018
Related Publication 20220086097A1 · Mar 17, 2022
Cited By (1)
US 12,506,694