IP Library › Granted Patent US 12,506,694
Granted Patent B2
US 12,506,694 · App. 18/437,988 · Granted Dec 23, 2025

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 12,506,694
App. No.
18/437,988
Granted
Dec 23, 2025
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 (64)

1 . 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.

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 4 , 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 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.

11 . The method 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 method of claim 10 , further comprising determining a current allocation matrix that identifies resources currently allocated to each of the clients from each of the servers in the cluster of servers.

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

14 . The method of claim 13 , 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 credits that each of the clients can request to acquire their maximum number of credits.

15 . The method of claim 10 , further comprising defining a maximum amount of resources for allocation for each of the servers, wherein the maximum amount of resources for each of the servers is based on a number of write or read parameters.

16 . The method of claim 10 , wherein each 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 method of claim 10 , wherein issuing the credits based on the allocation state includes at least one of:

issuing credits in an amount equal to the request when the allocation state is safe; and when the allocation state is unsafe,

issuing credits in an amount greater than the request;

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

issuing zero credits; or

issuing negative credits.

18 . The method of claim 10 , wherein:

the credits are stream credits for performing streaming operations with the resources;

the credits are restore credits for performing restore operations with the resources; or

the credits are distributed segment processing credits for performing distributed segment processing operations with the resources.

19 . The method of claim 18 , wherein the resources include one or more of streams, reads, writes, processing, or deduplication.

20 . 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.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2024
From: DESAI, KEYUR B.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 066436/0089 →
Continuity (3)
Continuation 17532476 · Nov 22, 2021
Continuation 16154475 · Oct 8, 2018
Related Publication 20240187351A1 · Jun 6, 2024
References Cited (107)
US 3350702A · Herman · 1967 [cited by applicant]
US 5453982A · Pennington et al. · 1995 [cited by applicant]
US 5586121A · Moura et al. · 1996 [cited by applicant]
US 5778320A · Drozt et al. · 1998 [cited by applicant]
US 5812545A · Liebowitz et al. · 1998 [cited by applicant]
US 5889956A · Hauser et al. · 1999 [cited by applicant]
US 5956321A · Yao et al. · 1999 [cited by applicant]
US 6438141B1 · Hanko et al. · 2002 [cited by applicant]
US 6459901B1 · Chawla et al. · 2002 [cited by applicant]
US 6467024B1 · Bish et al. · 2002 [cited by applicant]
US 6502165B1 · Kishi et al. · 2002 [cited by applicant]
US 7269697B1 · Reeve et al. · 2007 [cited by applicant]
US 7461236B1 · Wentzlaff · 2008 [cited by applicant]
US 7478158B1 · Rodgers et al. · 2009 [cited by applicant]
US 7539735B2 · Fruchtman et al. · 2009 [cited by applicant]
US 7583658B1 · Wang et al. · 2009 [cited by applicant]
US 7685306B2 · McEnroe et al. · 2010 [cited by applicant]
US 7698115B2 · Voellm et al. · 2010 [cited by applicant]
US 7707248B2 · Simard et al. · 2010 [cited by applicant]
US 8306036B1 · Bollay · 2012 [cited by applicant]
US 8381217B1 · Wijayaratne et al. · 2013 [cited by applicant]
US 8400924B2 · Wang et al. · 2013 [cited by applicant]
US 9477997B2 · Ben-Natan et al. · 2016 [cited by applicant]
US 9619127B2 · Varner et al. · 2017 [cited by applicant]
US 10652796B2 · Laliberte · 2020 [cited by applicant]
US 10798140B1 · Mercier · 2020 [cited by examiner]
US 11201828B2 · Desai · 2021 [cited by examiner]
US 11936568B2 · Desai · 2024 [cited by examiner]
US 20020053011A1 · Aiken et al. · 2002 [cited by applicant]
US 20030158913A1 · Agnoli et al. · 2003 [cited by applicant]
US 20040139207A1 · De Jong · 2004 [cited by applicant]
US 20040165598A1 · Shrimali et al. · 2004 [cited by applicant]
US 20040267932A1 · Voellm et al. · 2004 [cited by applicant]
US 20050068911A1 · Miyake · 2005 [cited by examiner]
US 20060179182A1 · Chadha et al. · 2006 [cited by applicant]
US 20070015525A1 · Beming et al. · 2007 [cited by applicant]
US 20070118653A1 · Bindal · 2007 [cited by applicant]
US 20070220262A1 · Suzuki et al. · 2007 [cited by applicant]
US 20080034021A1 · De Spiegeleer · 2008 [cited by applicant]
US 20080126606A1 · Wang et al. · 2008 [cited by applicant]
US 20080134173A1 · Abbondanzio · 2008 [cited by examiner]
US 20080155553A1 · Astigarraga et al. · 2008 [cited by applicant]
US 20080307094A1 · Karonen et al. · 2008 [cited by applicant]
US 20090138616A1 · Alvarez et al. · 2009 [cited by applicant]
US 20090171812A1 · Fadell · 2009 [cited by examiner]
US 20090178050A1 · Bichler et al. · 2009 [cited by applicant]
US 20100031157A1 · Neer · 2010 [cited by examiner]
US 20110032947A1 · Brueggen · 2011 [cited by applicant]
US 20110184998A1 · Palahnuk et al. · 2011 [cited by applicant]
US 20120096167A1 · Free et al. · 2012 [cited by applicant]
US 20120226712A1 · Vermeulen et al. · 2012 [cited by applicant]
US 20120281708A1 · Chauhan et al. · 2012 [cited by applicant]
US 20120327779A1 · Gell et al. · 2012 [cited by applicant]
US 20130055279A1 · Sistare · 2013 [cited by applicant]
US 20130061233A1 · Zhou et al. · 2013 [cited by applicant]
US 20130097680A1 · Bendapudi et al. · 2013 [cited by applicant]
US 20130122858A1 · Bedingfield et al. · 2013 [cited by applicant]
US 20130128082A1 · Kiyosawa et al. · 2013 [cited by applicant]
US 20130159532A1 · Boero et al. · 2013 [cited by applicant]
US 20130191929A1 · Yin et al. · 2013 [cited by applicant]
US 20130232503A1 · Volvovski et al. · 2013 [cited by applicant]
US 20130297857A1 · Sela · 2013 [cited by applicant]
US 20140101113A1 · Zhang et al. · 2014 [cited by applicant]
US 20140195688A1 · Archer et al. · 2014 [cited by applicant]
US 20150007189A1 · De et al. · 2015 [cited by applicant]
US 20150067691A1 · Johnson et al. · 2015 [cited by applicant]
US 20160005007A1 · Marsico · 2016 [cited by applicant]
US 20160072691A1 · Xu et al. · 2016 [cited by applicant]
US 20160072704A1 · Angel et al. · 2016 [cited by applicant]
US 20160323374A1 · Russinovich et al. · 2016 [cited by applicant]
US 20170124737A1 · Joseph et al. · 2017 [cited by applicant]
US 20170177253A1 · Hayes et al. · 2017 [cited by applicant]
US 20170277620A1 · Kadioglu · 2017 [cited by applicant]
US 20180077293A1 · Chai · 2018 [cited by applicant]
US 20180097707A1 · Wright et al. · 2018 [cited by applicant]
US 20180113804A1 · Hsu et al. · 2018 [cited by applicant]
US 20180278647A1 · Gabaev et al. · 2018 [cited by applicant]
US 20190004862A1 · Bernat et al. · 2019 [cited by applicant]
US 20190068515A1 · Seely et al. · 2019 [cited by applicant]
US 20190238635A1 · Ng · 2019 [cited by examiner]
US 20190261225A1 · Eswarakava et al. · 2019 [cited by applicant]
US 20190348158A1 · Livesay et al. · 2019 [cited by applicant]
US 20200014804A1 · Pollak · 2020 [cited by applicant]
US 20200112516A1 · Desai · 2020 [cited by applicant]
CN 101211289A · 2008 [cited by applicant]
CN 102655503A · 2012 [cited by applicant]
CN 103227809A · 2013 [cited by applicant]
CN 103353867A · 2013 [cited by applicant]
CN 103369041A · 2013 [cited by applicant]
CN 105487818A · 2016 [cited by applicant]
CN 107077387A · 2017 [cited by applicant]
CN 107743611A · 2018 [cited by applicant]
EP 3350702A1 · 2018 [cited by applicant]
WO 2005079001A1 · 2005 [cited by applicant]
WO 2008118608A1 · 2008 [cited by applicant]
WO 2017123335A1 · 2017 [cited by applicant]
Merriam-Webster's Collegiate Dictionary 1282 (prefix def. 1), 1030 (adj. def. 2a (10th ed. 1993) (Year: 1993). [cited by examiner]
Brad Gilmer, “ATM for broadcast”, Nov. 1, 2002, TV Tech, pp. 1-5 (Year: 2002). [cited by applicant]
International Preliminary Report on Patentability received for PCT Patent Application No. PCT/US2019/043970, mailed on Apr. 22, 2021, 10 pages. [cited by applicant]
International Preliminary Report on Patentability received for PCT Patent Application No. PCT/US2019/043976, mailed on Apr. 22, 2021, 8 pages. [cited by applicant]
International Preliminary Report on Patentability received for PCT Patent Application No. PCT/US2019/044209, mailed on Apr. 22, 2021, 9 pages. [cited by applicant]
International Search Report and Written Opinion dated Oct. 2, 2019 in corresponding PCT application PCT/US2019/043970. [cited by applicant]
International Search Report and Written Opinion issued in Application No. PCT/US2019/044209 dated Oct. 18, 2019. [cited by applicant]
International Search Report for PCT/US2019/043976 and mailed on Sep. 18, 2019. [cited by applicant]
Merriam-Webster's Collegiate Dictionary 70 (10th ed. 1993) (Year: 1993). [cited by applicant]
Office Action dated Jul. 11, 2023 in CN application 201980066423.4. [cited by applicant]
Slutsky, David J. “The use of tables”, 2014, Journal of wrist surgery vol. 3, 4, p. 219. (Year: 2014). [cited by applicant]