Stream allocation using stream credits
AssigneeEMC IP Holding Company LLC
InventorKeyur B. Desai
Life of this patent
Estimating the term…
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.
Claims20
A method for allocating resources of a cluster of servers, the method comprising:
- predetermining maximum stream credits associated with each client of the cluster of servers;
- 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 the cluster has a number of stream resources, wherein the allocation state is unsafe when the streams allocated by the cluster exceeds the number of stream resources,
- wherein determining the allocation state includes:
- determining a number of streams available from the cluster;
- assuming that the request for stream credits is granted;
- and
- determining whether at least one other client could request and use their maximum stream credits;
- wherein the allocation state of the cluster is safe when the at least one other client can request and use their maximum stream credits without exceeding the number of stream resources and wherein the allocation state of the cluster is unsafe when the at least one other client cannot request and use their maximum stream credits without exceeding the number of stream resources;
- issuing, by the cluster, the stream credits to the client in response to the request for stream credits based on the allocation state;
- and
- providing streams to the client according to the stream credits issued to the client, wherein the client uses the provided streams.
A method for allocating resources of a cluster of servers, the method comprising:
- predetermining maximum credits associated with each client of the cluster of servers;
- receiving a request for credits from a client at the cluster, wherein the credits are for using resources provided by the cluster of servers;
- determining, by the cluster, an allocation state of the cluster in response to the request for credits from the client, wherein the cluster has a number of resources, wherein the allocation state is unsafe when the resources allocated by the cluster exceeds the number of resources, wherein determining the allocation state includes:
- determining resources available from the servers;
- assuming that the request for credits is granted;
- and
- determining whether at least one other client could request and use their maximum credits;
- wherein the allocation state of the cluster is safe when the at least one other client can request and use their maximum credits without exceeding the number of resources and wherein the allocation state of the cluster is unsafe when the at least one other client cannot request and use their maximum credits without exceeding the number of resources;
- issuing the credits, by the cluster, to the client in response to the request for credits based on the allocation state;
- and
- providing resources to the client according to the credits issued to the client, wherein the client uses the provided resources.
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 maximum stream credits associated with each client of the cluster of servers;
- 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 the cluster has a number of stream resources, wherein the allocation state is unsafe when the streams allocated by the cluster exceeds the number of stream resources,
- wherein determining the allocation state includes:
- determining a number of streams available from the cluster;
- assuming that the request for stream credits is granted;
- and
- determining whether at least one other client could request and use their maximum stream credits;
- wherein the allocation state of the cluster is safe when the at least one other client can request and use their maximum stream credits without exceeding the number of stream resources and wherein the allocation state of the cluster is unsafe when the at least one other client cannot request and use their maximum stream credits without exceeding the number of stream resources;
- issuing, by the cluster, the stream credits to the client in response to the request for stream credits based on the allocation state;
- and
- providing streams to the client according to the stream credits issued to the client, wherein the client uses the provided streams.
Dependencies are inferred from the claim text.