CN112805684A - 使用恢复借用的资源分配 - Google Patents

使用恢复借用的资源分配 Download PDF

Info

Publication number
CN112805684A
CN112805684A CN201980066453.5A CN201980066453A CN112805684A CN 112805684 A CN112805684 A CN 112805684A CN 201980066453 A CN201980066453 A CN 201980066453A CN 112805684 A CN112805684 A CN 112805684A
Authority
CN
China
Prior art keywords
client
borrowing
server
recovery
flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980066453.5A
Other languages
English (en)
Inventor
K·B·德赛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Publication of CN112805684A publication Critical patent/CN112805684A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/805QOS or priority aware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/822Collecting or measuring resource availability data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Hardware Redundancy (AREA)

Abstract

公开了用于分配资源的***和方法。使用恢复借用分配诸如流的资源。以确保***在安全分配状态下操作的方式将借用分发给客户端。借用不仅可用于分配资源,还可在必要时用于节流客户端。可以全部地、部分地、和以大于请求的数量地许可借用。还可以分发零或负借用来节流客户端。恢复借用与读取相关联并且可以通过确定CPU/核能够支持多少个借用来进行分配。该最大数量可以在与服务器连接的客户端之间划分。

Description

使用恢复借用的资源分配
技术领域
本发明的实施方式涉及用于分配资源的***和方法。更具体地,本发明的实施方式涉及用于在执行数据保护操作时进行流或资源分配的***和方法,所述数据保护操作诸如恢复操作。附录A构成本申请的一部分并且通过引用以其整体并入本申请中。
背景技术
在单个节点或分布式/超出尺寸范围的集群环境中,分配资源可能是具有挑战性的任务。当尝试确保将资源公平地分配给使用可用资源的所有客户端时,该任务变得更复杂。例如,任何一个客户端都不应该能够具有可用资源的不公平的大份额。同时,需要满足服务质量(QOS)要求。
更具体地,数据保护操作(例如,备份、恢复)通常与资源分配问题和服务质量(QOS)问题相关联。当一些客户端正在使用过多的资源而其他客户端因此被忽视或不能获得必要的资源时,这些问题就会出现。另外,当对资源的需求超过节点或集群所能承受的时,QOS通常受损。为了避免这种状况或校正这种状况,需要在任一特定时间节流来自任一特定客户端的请求。因此,需要用于公平地分配资源而同时确保或满足服务质量要求的***和方法。
附图说明
为了描述能够获得本申请的至少一些方面的方式,将参考在附图中示出的本申请的具体实施方式来进行更具体的描述。应理解这些附图仅示出本发明的示例性实施方式而因此不认为是限制本发明的范围,将通过使用附图利用附加的特殊性和细节来描述和解释本发明的实施方式,附图中:
图1示出了配置成分配资源给客户端的服务器的示例;
图2进一步示出了在集群资源或服务器资源的情况下包括流分配的资源分配;
图3A示出了用于在计算环境中执行资源分配、特别是用于分配流的方法的示例;
图3B示出了用于评估节点或服务器或集群的流分配状态的方法的示例;以及
图3C进一步示出了图3B的用于评估流分配状态的方法;
图4示出了将恢复借用分配给请求客户端的***的示例;以及
图5是示出了用于在诸如恢复操作的数据保护操作期间执行资源分配的方法的示例的流程图。
具体实施方式
本发明的实施方式涉及用于执行数据保护操作的***和方法。数据保护操作的示例包括、但不限于资源分配操作,资源分配操作包括流分配、读取分配、分段处理分配等。数据保护操作还可以包括备份操作、恢复操作、去重操作、镜像操作、数据复制操作等或其组合。
本发明的实施方式涉及用于在计算环境中分配资源的***和方法。本发明的实施方式还涉及在资源分配的情况下用于测量和改善服务质量以及用于对客户端节流的***和方法。本发明的实施方式还涉及例如在执行恢复操作时用于分配流给客户端、分配恢复借用(credit)的***和方法。
在一个示例中,服务器的集群(或单个服务器或节点)可以具有能够分配给客户端的资源。这些资源包括流、读取、写入、处理、去重等。特定服务器例如可能提供x个流、或一定数量的读取/写入。总的来说,集群还可以提供大数量的流、读取/写入、以及处理。本发明的实施方式涉及用于分配这些资源的***和方法。
图1示出了计算环境的示例,其中,客户端与服务器(或集群)通信。在该示例中,分配给客户端的资源包括流。客户端可能能够与多个服务器建立多个流。类似地,服务器可以与多个客户端建立多个流。
这些资源(和/或包括读取资源、写入资源、处理资源等的其他资源)被分配,使得集群的服务器以安全分配状态操作。安全分配状态是可以许可所有的资源请求并为所有的资源请求服务直至完成的状态。这使用借用***来实现。为了解释多种场景,存在可以许可的不同类型的借用。然而,每种类型可以与正在被分配的资源有关。不同类型的借用有效地表示对借用请求的不同响应。借用***可以用于同时分配不同类型的资源和/或同时分配多个资源。
例如,由服务器或集群许可的借用的数量可以等于所请求的借用的数量、小于所请求的借用的数量、大于所请求的借用的数量、为零、或为负数。分发零借用或负借用允许服务器完全使用资源但在必要时进行节流。这也允许服务器或集群从不安全状态恢复并返回安全分配状态。举例来说,可以如下描述借用:
预取借用:大于客户端所请求的借用的数量。
部分借用:小于客户端所请求的借用的数量(但大于0)。
相等借用:等于客户端所请求的借用的数量。
零借用:等于零,指示当前客户端请求不能被处理。客户端需要等待并重新尝试获得借用。
负借用:为负数,指示客户端释放缓存的借用的数量。
零借用和负借用允许服务器节流来自客户端的请求。
图1示出了提供资源给客户端(由客户端102、客户端104、客户端106和客户端108表示)的服务器(例如,数据保护或备份服务器)110。服务器100也可以表示节点的集群或服务器的集群。在一个示例中,客户端102、客户端104、客户端106和客户端108正在向服务器110发送数据流(例如,备份数据或流、恢复流、包括用于处理(诸如去重)的数据的流、等等)/从服务器110接收数据流。例如,客户端102可以正在使用流112备份多个虚拟机、数据库、文件***、或其他数据类型。类似地,客户端104与流114相关联,客户端106与流116相关联,以及客户端108与流118相关联。
在该示例中,服务器110配置成分配流给客户端102、客户端104、客户端106和客户端108。在一个示例中,服务器102配置成使用流借用来执行流分配。这些流借用可以使用资源分配表120来管理,资源分配表120允许确定分配状态(例如,安全、不安全)。每当分发借用时(不管类型如何),分配表120都进行更新,使得可以评估随后的请求。
在一个示例中,评估对流借用的请求以确定许可该请求是否会导致安全分配状态。通常,如果得到的分配状态是安全的,则许可该请求。如果该请求导致不安全分配状态,则拒绝该请求,例如通过分发零借用或通过分发负借用来拒绝该请求。
在以下描述中以及仅作为示例,假设1个可用流与1个许可的流借用相关联。换句话说以及仅作为示例,1个借用表示1个流。其他根据资源分配方案的借用可以是不同的。例如,服务器可以向每个借用许可x个流。如果与所有客户端相关联的所有的流可以被完成执行,则服务器110可以向请求客户端许可流借用。
由于服务器110可能不知道特定客户端流什么时候终止,也不知道到该特定客户端的流完成的时间不同的客户端会再请求多少个流借用,服务器110可假设所有的客户端将最终尝试获取它们最大允许的流借用、使用这些流借用、然后释放这些流借用。
基于这些假设,服务器可以通过找到客户端的假想的一组流借用请求来确定流分配状态是否为安全的,该组流借用请求将允许每个客户端获取其最大请求的流借用以及使用这些流借用。如果是不存在这样一组流借用请求的状态,这可导致服务器110许可零流借用或负流借用。这可使得接收到这些许可或请求的客户端返回正持有的任何流借用。换句话说,许可或分发零借用或负借用的能力允许客户端被节流。在一个示例中,客户端可以自我节流,因为它们可能没有足够的借用或因为它们可能需要返回借用给服务器110。以这种方式,服务器然后尝试回到安全流分配状态,从而许可所请求的借用。
本发明的实施方式可以当由特定分配导致的***的分配状态为安全时分配资源。如果所提出的分配导致不安全状态,则可以进行分配以使***返回安全分配状态(例如,通过分发负借用或零借用)。以下关于流借用的讨论包括以下内容。参照下面描述的图3B和图3C更详细地描述该分配方法。
在一个示例中,使C为***中客户端的数量,N为***中节点或服务器的数量。
总(最大流)可用性矩阵(TAM):长度N的矩阵,指示可用于每个节点的流资源的最大数量。
TAM[j]=k,存在可用的流资源Rj的k个实例。
当前分配矩阵(CALM):限定当前分配给每个客户端的流资源的数量的C×N矩阵。
CALM[i,j]=k,于是客户端Ci当前被分配流资源Rj的k个实例。
当前可用性矩阵(CAM):长度N的矩阵,指示当前可用于每个节点类型的流的数量。其通过将当前分配给每个单独的节点上的所有客户端的流相加并从用于该节点的总最大流中减去相加的结果来确定。
CAM[j]=TAM[j]–(CALM[C0]+CALM[C1]+…+CALM[CN]);
当前需求矩阵(CDM):限定当前需求或时间点最大所请求的流的C×N矩阵。
如果CDM[i,j]=k,则客户端Ci可以最多请求流资源Rj的k个实例。
当前需要矩阵(CNM):指示每个客户端的流借用需要的C×N矩阵(需要=需求-已分配)。
CNM[i,j]=CDM[i,j]-CALM[i,j]。
在任一时间点,服务器确定响应于客户端所请求的借用而分配流借用是否是安全的。如果在给定时间点,***处于安全状态,则所有客户端借用请求可以被满足,即针对所有客户端,它们的流资源需要小于用于***中所有节点的当前流可用性。
CNM[i,j]<CAM[j]
如果客户端的流需要大于可用的流(CNM[i,j]>CAM[j]),则***被认为是不安全的(不安全分配状态)并且负借用或零借用被许可给客户端,以及做出努力以将***带到安全/稳定分配状态。
以下示例更详细地说明该过程。图2示出了包括节点或服务器202以及客户端204的集群。更具体地,图2示出了四个节点或服务器:N1、N2、N3和N4。图2还示出了使用服务器202的资源的客户端C1、C2和C3(客户端204)。在该示例中,分配给客户端204的服务器202的资源包括流206。流206可以包括备份流、恢复流、或其他数据流。
作为示例,假设在图2中,在每个节点上可用的TAM或总最大流如下表示:
N1 N2 N3 N4
60 50 70 60
因此,N1具有60个用于分配给客户端的流。类似地,N2、N3和N4分别具有50个、70个和60个用于分配给客户端的流。
总最大流可以通过考虑服务器上处理器和核的数量以及通过确定流消耗多少处理功率来确定。可以以其他方式、诸如通过测试或通过用户输入来确定总最大流。
下面的CALM矩阵指示已经分配给客户端C1-C3的流借用。在该示例中,假设客户端C1、C2和C3具有已经分配给它们的以下流借用。
N1 N2 N3 N4
C1 10 20 20 10
C2 10 00 30 30
C3 10 20 10 00
CALM
CAM或当前可用流(或还没分配的流)可以根据上述TAM和CALM来计算。例如:根据以上TAM矩阵,节点N1具有它可以分配的最大60个流。节点N1已经分配给C1、C2和C3各10个流。因此N1上当前可用的总流为:
CAM[N1]=TAM[N1]–(CALM[0,C1]+CALM[0,C2]+CALM[0,C3]),即
CAM[N1]=60–(10+10+10)=30。
类似地,
CAM[N2]=50–(20+0+20)=10。
CAM[N3]=70–(20+30+10)=10。
CAM[N4]=60–(10+30+0)=20。
Figure BDA0003011494310000071
更通常来讲,CAM指示哪些节点或服务器正在提供分配给客户端204的流。如前所述,客户端204可以连接到任一服务器202并且因此可以从集群中的任一服务器202请求借用。
以下CDM限定在给定时间点的最大客户端流借用请求。换句话说,以下矩阵限定每个客户端在给定时间点可以从每个服务器请求多少个流。这些数量或最大值可以由管理员预先确定或设置。此外,这些数量可以是动态的以及可以基于客户端的数量和/或服务器的数量。当服务器和客户端的数量改变时,该时间点的流借用请求数量可能改变。
N1 N2 N3 N4
C1 30 30 20 20
C2 10 20 30 40
C3 10 30 50 00
CDM
通过从当前需求矩阵(CDM)减去当前已分配流矩阵(CALM),C1、C2和C3所需要的总流借用或CNM可以如下确定:
Figure BDA0003011494310000081
使用以上信息,可以确定每个客户端是否可以获取并使用其最大所请求的流借用。以下格式用于以下讨论,<xx xx xx xx>表示分别与节点N1、N2、N3和N4相关联的流。
例如,根据CNM,C1请求并获取N1的20个流借用,N2的10个流借用以及N4的10个流借用,以达到其最大所请求的借用。服务器可以在实际许可请求之前执行该确定。
在C1请求并获取之后,现在可用流如下确定:
<30 10 10 20>(CAM或可用流)–
<20 10 00 10>(由C1获取的流以达到C1的最大值)=
<10 00 10 10>(仍可用的流)
因此,集群仍具有N1的10个可用流、N2的00个可用流、N3的10个可用流以及N4的10个可用流。
接着,C1终止与流有关的进程并将N1的30个流借用、N2的30个流借用、N3的20个流借用和N4的20个流借用返回给***。这些是与CDM中的C1行相关联的流。将其加到当前可用流:
<10 00 10 10>+<30 30 20 20>=<40 30 30 30>
因此,现在集群具有N1的40个总可用流、N2的30个总可用流、N3的30个总可用流以及N4的30个总可用流。该<40 30 30 30>小于或等于TAM<60 50 70 60>或者用于集群的每个节点的总最大流,即<40 30 30 30><=<60 50 70 60>,因此***状态是安全的,以分配和处理下一客户端请求。
现在C2要求N1的20个流和N4的10个流。然后C2终止并返回其所有的流借用。在该示例中且在这些步骤之后,可用流为或等于:
<40 30 30 30>(在C2的请求之前的当前可用流)–
<00 20 00 10>(由C2要求的流以达到C2的最大值)=
<40 30 30 30>-<00 20 00 10>=<40 10 30 20>(仍可用的流)+
<10 20 30 40>(与CDM中的C2行相关联的流)
<10 20 30 40>+<40 10 30 20>=<50 30 60 60>(在C2返回流借用之后的可用流)。
该<50 30 60 60>小于或等于TAM<60 50 70 60>或者用于集群的每个节点的总最大流,即
<50 30 60 60><=<60 50 70 60>,因此***状态是安全的,以分配和处理下一客户端请求。
接下来,C3要求N2的10个流和N3的40个流,终止并返回所有流(返回流借用)。这导致以下:
<50 30 60 60>(在C3的请求之前的当前可用流)–
<00 10 40 00>(由C3要求的流以达到C3的最大值)+
<10 30 50 00>(由C3返回的流)=
<60 50 70 60>(可用流借用)。
该<60 50 70 60>小于或等于TAM<60 50 70 60>或者用于集群的每个节点的总最大流,即
<60 50 70 60><=<60 50 70 60>,因此***状态是安全的,以分配和处理下一客户端请求。
这表明了因为每个客户端都可以获取其所请求的最大流借用并使用流借用,因此如上所述,流分配状态是安全的且可以许可流借用给所有客户端。
流分配安全状态指示可以许可或分发流借用。本发明的实施方式预期了多种不同的可请求且可许可的借用。
下面的示例说明了这些类型的借用并说明了是否许可借用。
示例1:服务器许可“相等”借用。
以与之前的示例开始的状态相同的状态开始,假设C3请求节点N3上的10个流借用。在本示例中,存在足够的可用流,使得可以许可借用请求。在许可之后,新的流分配状态如下:
节点上的CAM或可用流:
N1 N2 N3 N4
可用流 30 10 00 20
当前分配给客户端204的流CALM现在如下(这里假设许可了C3的N3的10个借用的请求):
N1 N2 N3 N4
C1 10 20 20 10
C2 10 00 30 30
C3 10 20 20 00
CALM
现在,客户端的最大所请求的流如下:
N1 N2 N3 N4
C1 30 30 20 20
C2 10 20 30 40
C3 10 30 50 00
CDM
利用该信息,可以确定新的流分配状态是否是安全的。
Figure BDA0003011494310000111
在以上示例中,C1可以获取N1的20个流、N2的10个流和N4的10个流,使用这些流并释放这些流。然后,C2可以获取N2的20个流和N4的10个流,使用这些流并释放这些流。最后,C3可以获取N2的10个流和N3的30个流,使用这些流并释放这些流。因此,该新的分配状态是安全的。
因为新的状态是安全的,因此许可了来自C3的对节点N3上的10个流借用的请求。这是服务器许可的流借用等于客户端所请求的流借用的数量的示例。
示例2:服务器许可“部分”借用
以与之前的示例开始的状态相同的状态开始,假设C3请求N3上的20个流借用。在本示例中,在许可所请求的流借用之前的可用流如下:
Figure BDA0003011494310000112
Figure BDA0003011494310000121
在许可流借用之后的可用流如下:
N1 N2 N3 N4
30 10 <u>-10</u> 20
由于在许可之后总的可用流的数量小于零,因此服务器可以决定许可10个流借用(这是部分许可,因为请求了20个流借用)。如之前关于前一示例所述,从N3向C3许可10个流借用导致安全分配状态。这示出了部分许可流借用的示例。
示例3:“零”或“负”流借用分配
从之前的开始状态,假设客户端C2请求10个来自节点N2的流借用。在本示例中,存在足够的流来许可流借用。假设请求被同意,新的状态将会是:
节点上的CAM或可用流:
N1 N2 N3 N4
可用流 30 00 10 20
根据初始状态的CALM或当前分配的流:
N1 N2 N3 N4
C1 10 20 20 10
C2 10 10 30 30
C3 10 20 10 00
CALM
CDM或该时间点最大所请求的流被确定如下:
N1 N2 N3 N4
C1 30 30 20 20
C2 10 20 30 40
C3 10 30 50 00
CDM
现在进行确定来确定新分配状态是否是安全的。假设客户端C1、C2和C3请求来自N2和N3的更多的流借用。
Figure BDA0003011494310000131
在该情况下,C1不能从N2、即从上述CNM获取足够的流,C1需要来自N2的10个流。然而,根据上述CAM,N2的可用流的数量为0。此外,C2也不能从N2要求足够的流,C3也不能从N2获取足够的流。
本示例中没有客户端能够获取足够的流借用来达到其最大允许的流借用。因此,该状态是不安全的并且服务器202可以节流客户端204中的一个或多个并通过分发负借用来从不安全分配状态恢复。换句话说,服务器202通过节流以及分发负借用来从该不安全状态恢复。
例如,服务器N2可以许可负20个流借用给C1。可选地,N2许可零借用给客户端C2和C3(即,客户端C2和C3节流并在一段时间之后重新尝试其请求)。客户端C1将其持有的20个流借用返回给N2,并且执行安全分配状态检查以确定状态是否是安全的。
流借用用于执行资源分配。流分配方法可以应用于许多类型的流。流分配方法可以通过向各种客户端许可负借用/零借用来维持稳定流分配状态。此外,本发明的实施方式允许如前所述的不同类型的借用许可。
更具体地,流借用可以是预取的。如果客户端未持有流借用(或者甚至客户端持有一些流借用)并且如果服务器上存在足够的空闲的流,则服务器可以在客户端请求时许可客户端更多的借用。
可以例如基于预期的工作量来请求预取的借用。这可以例如在恢复操作期间应用,在恢复操作时,流借用被预期用于通过读取备份来恢复流。
许可的借用还可以用于作出与设定客户端尺寸的高速缓存的尺寸有关的决定。这例如与利用用于恢复操作的流借用提前读取、执行智能提前读取、或使用借用来管理解决方案的成本有关。
部分许可借用可以允许部分完成操作。此外,可以通过分发负借用以及从客户端的高速缓存冲刷负数量的借用来从客户端取回流借用。换句话说,如果许可的借用的数量为零或负,则客户端可以被节流。可以基于所请求的借用的类型来实现更多不同的借用分配方法。
图3A示出了用于执行资源分配的方法的示例。在一个示例中,可以定义302或确定与资源分配相关联的各种参数。例如,可以关于每个节点或服务器可以安全地支持多少个流来进行确定。这可以基于处理器/核的数量、内存、写入/读取参数等。例如,可以确定写入之间的关系、处理器或核消耗。如果预定数量的写入或者数据传输速率消耗1%的CPU,则以该传输速率的流可以对应于1个借用。此外,还可以确定每个客户端允许的流的最大数量。
方法300的该方面可以一次执行。然而,当***中增加/移除节点或者当***中增加/移除客户端时,可以重新评估方法300的该方面。这些值还可以考虑用于由服务器202执行的可能不涉及流或不涉及正在分配的特定资源的其他功能。此外,这些值还可以能够基于其他因素、例如当日时间来改变。例如,当处理器例如在较慢的时期不被其他任务所需时,其可以临时增加可用流的数量。
一旦已经定义了资源分配且服务器正在分配资源给客户端,方法300就施行或执行分配方法。例如,可以接收304对流借用的请求。如之前所讨论的,该请求被评估,以确定所请求的分配是否会导致安全分配状态。因此,服务器可以通过假设许可该请求来评估306流状态或分配状态。这涉及考虑是否其他客户端还可以被分配其最大借用。如之前所述,在一个实施方式中,假设客户端可以最终请求、使用和释放其允许的最大借用。因此该评估确定如果同意该请求,则分配状态将会如何。
然后服务器根据该结果(所确定的分配状态)分发借用308给请求客户端(和/或其他客户端)。如果分配状态是安全的,则服务器可以分发等于该请求或者大于等于该请求的借用。如果分配状态是不安全的,则可以发生部分许可,这仍会导致安全分配状态。如果分配状态是不安全的,则服务器可以分发零或负借用。在一个示例中,零和/或负借用可以分发给任何客户端。
图3B示出了评估流状态的更多细节的示例。更具体地,图3B示出了图3A中所示的评估服务器流状态306的示例。因此,方法320示出了评估服务器流状态306的示例。在方法320的示例中,服务器可以计算TAM 322,其确定总的可用流。然后服务器可以查找CALM324。CALM标识当前被分配给客户端的流。
接着,时间点CAM被确定326。这通过TAM减去CALM来确定(CAM=TAM–CALM)。这允许服务器确定多少个流可用于分配。这可以从整个***的角度和/或基于每个节点或每个服务器来确定。如以上所讨论的,可以基于每个服务器来确定可用流的数量。在一个示例中,这确保特定服务器的资源不会负担过重。另外,在一个实施方式中,这可以给予服务器或集群确定哪些服务器提供或分配资源的灵活性。例如,如果重定向能够导致安全分配状态,则服务器可以将请求重定向到不同的服务器。
接着,CDM被确定328以及通过CDM减去CALM来确定CNM 330(CNM=CDM–CALM)。
在已经确定该信息之后,进行确定332流分配状态是安全的还是不安全的。如果流分配状态是不安全的,则许可零或负借用340。如果流分配状态是安全的,则许可借用。例如,可以许可部分借用334,可以许可相等借用336,或者可以许可预取借用338。然后分发借用308。在一个示例中,分发借用308可以是方法320的一部分并被并入许可借用334、336、338或340中。
图3C示出了确定流分配状态的示例。更具体地,图3C示出了图3B中的确定流分配状态是否安全332的示例。方法348可以针对每个客户端350来执行。从第一客户端350开始,确定352CNM是否大于CDM。因此,如果当前需要不大于当前需求,则状态为不安全354并且分发或许可负借用或零借用,如图3B所示。
当CNM大于CDM时,然后在许可客户端的最大流请求之后的流可用性被确定356。该计算可以在好像所请求的借用被许可的情况下执行以确定所得到的状态是否是安全的。此外,在一个实施方式中,所有客户端被当做整体来评估以确定流分配状态是否是安全的。
在一个示例中,流可用性(356)通过当前可用流358的数量(这可以作为整体或者基于每个服务器或节点来进行)减去客户端获取的以达到客户端的最大需求360的流来确定。在需求被处理362之后该结果然后被加到由客户端返回的流。换句话说,在一个示例中,***在假设客户端所请求的其最大可能的流被许可的情况下进行评估。
基于该确定356,关于可用流是否小于总可用矩阵进行确定364。若否,则状态为不安全的366。若是且所有客户端都已经被处理368,则状态是安全的372且如图3B所示可以许可借用。如果没有处理所有客户端,则处理下一客户端370。
因此,图3A-图3C示出了用于分配资源的方法的示例,使得***的分配状态是安全的。当所提出的资源分配(例如,来自客户端的请求)导致不安全分配状态时,则分配可以是零或负数,这允许***避免不安全分配状态或返回安全分配状态。
除了流借用,本发明的实施方式还涉及恢复借用,恢复借用是借用的另一示例。恢复操作可以包括从由备份服务器维持的备份中读取数据以及将从备份中读取的数据传输或发送到恢复位置或设备。在一个示例中,资源分配***和方法可以仅依赖于可以根据数据定义的恢复借用(例如,1个借用=256MG或500MB、或1GB等的所读取的数据)、和/或如之前所述的流借用。
恢复借用通过帮助客户端进行预读高速缓存分配/尺寸设置、帮助客户端执行智能预读、和改善恢复操作的性能来改善客户端或服务器的操作。此外,本发明的实施方式有助于仅恢复所需的数据。这可以避免与不需要恢复操作的数据相关联的成本。
更具体地,客户端经常实施预读高速缓存并可以读取所需要的更多数据。这可能成为关心的事,例如在云环境中,其中成本根据每个恢复字节来确定。换句话说,读取比所需要的数据更多的数据可能是昂贵的。本发明的实施方式允许基于正被恢复的数据的大小来设置或调整客户端的预读高速缓存或缓冲器的大小。这是有用的,因为在一个示例中,客户端可能不知道待恢复的数据的大小。服务器可以通过提供预取的恢复借用来帮助分配客户端预读高速缓存和设置客户端预读高速缓存的大小。
例如,图4示出了使用恢复借用和/或流借用执行恢复操作的客户端的示例。服务器(或集群)能够支持使用恢复借用和/或流借用的多个客户端。
在图4中,客户端402正在将被恢复的数据406恢复到存储器404(或其他设备/机器)。被恢复的数据406可以是数据库、虚拟机、文件***等。当执行恢复操作时,从备份412(例如,特定备份)中恢复被恢复的数据4006。从备份412中读取的数据因此由服务器408读取并传输到客户端402。然后客户端将数据写入被恢复的数据406。
在该示例中,客户端402可以从服务器408(例如,备份服务器)请求恢复借用。服务器408可以维持分配表414,分配表414允许跟踪恢复借用和/或流借用。在该示例中,客户端402不知道待恢复的数据集的大小。然而,服务器408可以知道该数据集的大小,因为其上下文存在于服务器408上。
仅作为示例,假设256MB的数据与一个恢复借用相关联,则可以发生以下情景。客户端402想要读取1GB的数据,因此可以从服务器408请求4个恢复借用。客户端也可以设置“预取”标志,该标志向服务器408指示这是连续的恢复以及服务器可以许可比所请求的更多的借用。如果待恢复的数据集为4GB,则服务器408可以许可16个恢复借用给客户端402,尽管只请求了4个恢复借用。
许可客户端402的恢复借用的数量可以用于调节客户端的预读高速缓存或缓冲器416的大小。例如,大的借用数量可以使客户端402将预读缓冲器或高速缓存的大小增大到能够容纳与所许可的借用相关联的数据量的大小。可替选地,可以以以下方式设置缓冲器416的大小:考虑高速缓存的数据被恢复到被恢复的数据406的速率。在一个示例中,缓冲器416的大小可以动态地适应于客户端402所持有的借用的数量。
如果恢复操作发生在云环境中,则服务器408可以忽略预取标志而选择以客户端所请求的量来许可恢复借用的数量。因为在云环境中预读以及恢复或读取比所需的数据更多的数据可能是昂贵的,因此可以这样做。
由服务器408许可的恢复借用的数量可以以与许可流借用的方式相似的方式被许可。所许可的恢复借用的量可以等于客户端所请求的恢复借用的数量、小于所请求的恢复借用的数量、大于所请求的恢复借用的数量、为零、或为负数。
根据客户端402所接收的恢复借用的数量,客户端402将使用恢复借用来执行恢复操作。恢复借用被用于读取数据,并且随着数据被读取,恢复借用相应地被使用或被返回。每个数据块的读取的使用都将导致使用一个恢复借用。
如果所许可的恢复借用的数量为零或负值,则是指示客户端节流。由此,恢复请求不能被执行(或者可以仅部分被执行)并且由客户端将恢复借用返回给服务器。这允许服务器实现安全分配状态。
如果恢复操作已经完成并且如果客户端402具有在其连接结构中高速缓存的额外的恢复借用,则客户端402可以选择最终释放那些恢复借用。服务器408可以更新其内部借用记账数据库、即分配表414,以对从特定客户端释放的恢复借用进行记账。
当许可借用时(不管类型如何),服务器408可以执行借用分配方法。本发明的实施方式预期到许多指标可用于确定借用分配或借用分配状态。示例包括机器能力(连接、处理器、核、内存大小、内存类型、客户端连接、现存的流、可用资源等或其组合。
图5示出了用于分配恢复借用的方法的示例。方法500可以包括不是每次执行方法都执行的步骤或动作。在图5中,平均消耗处理器或核(例如,CPU或中央处理单元)的1%的读取的量或数量被确定或定义502。尽管该数量通常是近似值,但是通过进行数据的经验恢复来收集统计数据可以用于限制该数量。在不同大小和/或数据类型的各种恢复运行或操作期间CPU利用的百分比可以被获得或测量。例如,这些观察的平均数可以用于计算数据的消耗1%的读取的数量。例如,如果观察到恢复1GB的数据消耗10%的CPU并导致平均10000个读取请求,则可以估计向服务器的1000个读取请求消耗1%的CPU。该结果可用于确定待分配给请求客户端的恢复借用的数量。
接着,每个核所允许的读取的平均数量被确定504。在一个示例中,这通过将消耗1%的CPU的读取的数量与每个核的空闲CPU的平均百分比相乘来确定。如果每个核的空闲CPU的平均百分比小于阈值(例如,2%),则许可所有客户端的借用为零或负数。
接着,每个客户端的最大借用被确定506。这可以通过将平均每个核允许的读取乘以CPU核的数量然后再除以客户端连接的数量来确定。每个客户端的最大借用表示客户端可以获取的借用的最大数量。
分配表对已经分发给客户端的借用进行记账。例如,如果客户端的最大借用是100个且已经被许可60个,则对50个恢复借用的请求可能导致许可部分借用或零借用或负借用。分配表随着借用被许可、释放等而更新。
在一个示例中,每个客户端借用的数量被确定508。这不同于最大借用,因为该动作或步骤可以考虑能够被调节或可配置的调谐因子。该调谐因子允许本发明的实施方式将预留值计入正在分配的资源中。该调谐因子可以为最大恢复借用的50%-70%。
接着,借用可以被分发到请求客户端510。举例来讲,所分发的借用的数量可以仅通过使用每个客户端所请求的恢复借用和所计算的借用的最小值来确定。如果客户端已经请求预取,则所分发的恢复借用的数量可以是每个客户端所请求的恢复借用和所计算的借用中的最大值。
考虑以下示例。如果平均消耗1%的CPU的读取的数量为1000个且每个核的空闲CPU的平均百分比为50%,则每个核平均允许的读取为((1000*0.5)=500)。如果CPU核的数量为4个且客户端的数量为10个,则每个客户端的最大借用为((500*4)/10=200)。如果调谐因子为50%,则所计算的每个客户端的借用为(200*0.5=100)。因此,每个客户端的最大借用与调谐的或计算的每个客户端的借用是不同的。
如果客户端然后请求40个恢复借用,则所许可的恢复借用为MIN(40,100)=40。因此许可40个借用。如果客户端请求预取,则所许可的借用为MAX(40,100)=100。因此许可100个借用。如果从云进行恢复,则可以忽略预取,在这种情况下,在该示例中所许可的借用可以为40个。
每次请求恢复借用时,本发明的实施方式都可以确保许可不会导致不安全分配状态。例如,请求超过客户端的最大借用的借用可能导致不安全分配状态。此外,当许可借用时还可以考虑该客户端和其他客户端已经使用的借用。另外,当确定分配状态时,可以确定每个核的空闲CPU的平均百分比。如果许可将空闲CPU的平均百分比降到低于阈值,则该许可可以是零借用或负借用。
在另一示例中,可以以类似于流借用的方式来管理恢复借用,使得对恢复借用的每个请求都在所有恢复借用可用的情况中考虑而不是在每个客户端所允许的最大借用或基于调谐因子计算的恢复借用的情况中考虑。
在一个示例中,恢复借用是流借用的示例,这至少因为正在恢复的数据也是从服务器到客户端的流。然而,这些借用类型也可以一起使用。例如,流借用可用于管理流的数量,而恢复借用可以确定特定客户端可以读取多少个数据用于客户端的所有流。
应当理解的是,可以以很多方式实现本发明,这些方式包括过程、装置、***、设备、方法、或者诸如计算机可读存储介质的计算机可读介质或计算机网络,在计算机网络中,计算机程序指令通过光通信链接或电通信链接来发送。应用程序可以采用在通用计算机上执行的软件的形式或者可以被硬连线或硬编码在硬件中。在本申请中,这些实现方式、或本发明可以采用的任何其它形式都可以被称为技术。通常,所公开的过程中步骤的顺序可以改变而仍在本发明的范围内。
本文所公开的实施方式可以包括使用包括各种计算机硬件或软件模块的专用或通用计算机,如下面更详细讨论的。计算机可以包括处理器和承载指令的计算机存储介质,所述指令在被处理器执行时和/或使得所述指令被处理器执行时,执行本文所公开的方法中的任一者或多者。
如上所述,在本发明的范围内的实施方式还包括计算机存储介质,所述计算机存储介质是用于承载或带有其上存储的计算机可执行指令或数据结构的物理介质。这种计算机存储介质可以是能够被通用或专用计算机访问的任何可用的物理介质。
以示例而不是限制的方式,这种计算机存储介质可以包括硬件,所述硬件诸如固态硬盘(SSD)、RAM、ROM、EEPROM、CD-ROM、闪存、相变内存(“PCM”)、或者其他光盘存储器、磁盘存储器或其他磁存储设备、或者可用于以计算机可执行指令或数据结构的形式存储程序代码的任何其他硬件存储设备,所述计算机可执行指令或数据结构可以被通用或专用计算机***访问和执行以实现本发明所公开的功能。以上的组合也应该被包括在计算机存储介质的范围内。这些介质也是非暂时性存储介质的示例,尽管本发明的范围未被限定到非暂时性存储介质的这些示例,但是非暂时性存储介质也包含基于云的存储***和结构。
计算机可执行指令包括例如使得通用计算机、专用计算机、或专用处理设备执行某一功能或某一组功能的指令和数据。尽管已经用特定于结构特征和/或方法动作的语言描述了主题,应理解的是,所附权利要求中限定的主题不必限定到上述特定特征或动作。相反,本文所公开的特定特征和动作被披露作为实现权利要求的示例形式。
如本文中所使用的,术语“模块”或“组件”可以指在计算***上执行的软件对象或程序。本文描述的不同的组件、模块、引擎、和服务可以实现为例如作为单独的线程在计算***上执行的对象或进程。尽管本文描述的***和方法可以以软件实现,但是以硬件或者软件和硬件的组合实现也是可以的且可预期的。在本申请中,“计算实体”可以是如本文之前所限定的任何计算***、或者在计算***上运行的任何模块或模块组合。
在至少一些实例中,提供硬件处理器,该硬件处理器可操作成执行用于执行方法或过程(诸如本文所公开的方法和过程)的可执行指令。该硬件处理器可以包括或不包括其他硬件、诸如本文所公开的计算设备和***的元件。
在计算环境方面,本发明的实施方式可以在客户端-服务器环境、网络环境或本地环境、或任何其他合适的环境中执行。用于本发明的至少一些实施方式的合适的操作环境包括云计算环境,在云计算环境中,客户端、服务器、和目标虚拟机中的一者或多者可以驻留并操作在云环境中。
本发明可以以其他特定形式实现而不脱离其精神或实质特征。所描述的实施方式在各方面均被考虑仅作为说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由之前的描述来指示。落入权利要求的等价含义和等价范围内的所有改变均被包含在权利要求的范围内。
附录A
Figure BDA0003011494310000221
Figure BDA0003011494310000231
Figure BDA0003011494310000241
Figure BDA0003011494310000251
Figure BDA0003011494310000261
Figure BDA0003011494310000271
Figure BDA0003011494310000281
结果:
可用流
Figure BDA0003011494310000282
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000283
每个客户端的最大流要求矩阵
Figure BDA0003011494310000284
Figure BDA0003011494310000291
每个客户端的流需要矩阵
Figure BDA0003011494310000292
***处于安全状态。
流分配处于稳定状态。
--------------
实验1:客户端C0从服务器N0请求10个流。
--------------
可用流
Figure BDA0003011494310000293
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000294
每个客户端的最大流要求矩阵
Figure BDA0003011494310000295
每个客户端的流需要矩阵
Figure BDA0003011494310000296
***处于安全状态。
流分配处于稳定状态。
--------------
实验2:客户端C0从服务器N0请求20个流。
--------------
可用流
Figure BDA0003011494310000301
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000302
每个客户端的最大流要求矩阵
Figure BDA0003011494310000303
每个客户端的流需要矩阵
Figure BDA0003011494310000304
***处于安全状态。
流分配处于稳定状态。
--------------
实验3:客户端C0从服务器N0请求30个流。
--------------
可用流
Figure BDA0003011494310000305
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000306
每个客户端的最大流要求矩阵
Figure BDA0003011494310000311
每个客户端的流需要矩阵
Figure BDA0003011494310000312
***处于安全状态。
流分配处于稳定状态。
--------------
实验4:客户端C0从服务器N0请求40个流。
--------------
可用流
Figure BDA0003011494310000313
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000314
每个客户端的最大流要求矩阵
Figure BDA0003011494310000315
每个客户端的流需要矩阵
Figure BDA0003011494310000316
***处于安全状态。
流分配处于稳定状态。
--------------
实验5:客户端C0从服务器N1请求10个流。
--------------
可用流
Figure BDA0003011494310000321
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000322
每个客户端的最大流要求矩阵
Figure BDA0003011494310000323
每个客户端的流需要矩阵
Figure BDA0003011494310000324
***处于安全状态。
流分配处于稳定状态。
--------------
实验6:客户端C0从服务器N1请求20个流。
--------------
可用流
Figure BDA0003011494310000325
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000331
每个客户端的最大流要求矩阵
Figure BDA0003011494310000332
每个客户端的流需要矩阵
Figure BDA0003011494310000333
***处于安全状态。
***分配处于稳定状态。
--------------
实验7:客户端C0从服务器N1请求30个流。
--------------
可用流
Figure BDA0003011494310000334
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000335
每个客户端的最大流要求矩阵
Figure BDA0003011494310000336
每个客户端的流需要矩阵
Figure BDA0003011494310000337
Figure BDA0003011494310000341
***处于安全状态。
流分配处于稳定状态。
--------------
实验8:客户端C0从服务器N1请求40个流。
--------------
可用流
Figure BDA0003011494310000342
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000343
每个客户端的最大流要求矩阵
Figure BDA0003011494310000344
每个客户端的流需要矩阵
Figure BDA0003011494310000345
***处于安全状态。
流分配处于稳定状态。
--------------
实验9:客户端C0从服务器N2请求10个流。
--------------
可用流
Figure BDA0003011494310000346
Figure BDA0003011494310000351
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000352
每个客户端的最大流要求矩阵
Figure BDA0003011494310000353
每个客户端的流需要矩阵
Figure BDA0003011494310000354
***处于安全状态。
流分配处于稳定状态。
--------------
实验10:客户端C0从服务器N2请求20个流。
--------------
可用流
Figure BDA0003011494310000355
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000356
每个客户端的最大流要求矩阵
Figure BDA0003011494310000357
每个客户端的流需要矩阵
Figure BDA0003011494310000361
***处于安全状态。
流分配处于稳定状态。
--------------
实验11:客户端C0从服务器N2请求30个流。
--------------
可用流
Figure BDA0003011494310000362
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000363
每个客户端的最大流要求矩阵
Figure BDA0003011494310000364
每个客户端的流需要矩阵
Figure BDA0003011494310000365
***处于安全状态。
流分配处于稳定状态。
--------------
实验12:客户端C0从服务器N2请求40个流。
--------------
可用流
Figure BDA0003011494310000371
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000372
每个客户端的最大流要求矩阵
Figure BDA0003011494310000373
每个客户端的流需要矩阵
Figure BDA0003011494310000374
***处于安全状态。
流分配处于稳定状态。
--------------
实验13:客户端C0从服务器N3请求10个流。
--------------
可用流
Figure BDA0003011494310000375
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000376
每个客户端的最大流要求矩阵
Figure BDA0003011494310000377
Figure BDA0003011494310000381
每个客户端的流需要矩阵
Figure BDA0003011494310000382
***处于安全状态。
流分配处于稳定状态。
--------------
实验14:客户端C0从服务器N3请求20个流。
--------------
可用流
Figure BDA0003011494310000383
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000384
每个客户端的最大流要求矩阵
Figure BDA0003011494310000385
每个客户端的流需要矩阵
Figure BDA0003011494310000386
***处于安全状态。
流分配处于稳定状态。
--------------
实验15:客户端C0从服务器N3请求30个流。
--------------
可用流
Figure BDA0003011494310000391
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000392
每个客户端的最大流要求矩阵
Figure BDA0003011494310000393
每个客户端的流需要矩阵
Figure BDA0003011494310000394
***处于安全状态。
流分配处于稳定状态。
--------------
实验16:客户端C0从服务器N3请求40个流。
--------------
可用流
Figure BDA0003011494310000395
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000396
Figure BDA0003011494310000401
每个客户端的最大流要求矩阵
Figure BDA0003011494310000402
每个客户端的流需要矩阵
Figure BDA0003011494310000403
***处于安全状态。
流分配处于稳定状态。
--------------
实验17:客户端C1从服务器N0请求10个流。
--------------
可用流
Figure BDA0003011494310000404
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000405
每个客户端的最大流要求矩阵
Figure BDA0003011494310000406
每个客户端的流需要矩阵
Figure BDA0003011494310000407
***处于安全状态。
流分配处于稳定状态。
--------------
实验18:客户端C1从服务器N0请求20个流。
--------------
可用流
Figure BDA0003011494310000411
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000412
每个客户端的最大流要求矩阵
Figure BDA0003011494310000413
每个客户端的流需要矩阵
Figure BDA0003011494310000414
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000415
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000416
Figure BDA0003011494310000421
每个客户端的最大流要求矩阵
Figure BDA0003011494310000422
每个客户端的流需要矩阵
Figure BDA0003011494310000423
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验19:客户端C1从服务器N0请求30个流。
--------------
可用流
Figure BDA0003011494310000424
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000425
每个客户端的最大流要求矩阵
Figure BDA0003011494310000426
每个客户端的流需要矩阵
Figure BDA0003011494310000427
Figure BDA0003011494310000431
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000432
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000433
每个客户端的最大流要求矩阵
Figure BDA0003011494310000434
每个客户端的流需要矩阵
Figure BDA0003011494310000435
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验20:客户端C1从服务器N0请求40个流。
--------------
可用流
Figure BDA0003011494310000436
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000441
每个客户端的最大流要求矩阵
Figure BDA0003011494310000442
每个客户端的流需要矩阵
Figure BDA0003011494310000443
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000444
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000445
每个客户端的最大流要求矩阵
Figure BDA0003011494310000446
每个客户端的流需要矩阵
Figure BDA0003011494310000447
Figure BDA0003011494310000451
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验21:客户端C1从服务器N1请求10个流。
--------------
可用流
Figure BDA0003011494310000452
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000453
每个客户端的最大流要求矩阵
Figure BDA0003011494310000454
每个客户端的流需要矩阵
Figure BDA0003011494310000455
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=2许可负借用=(10)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000456
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000461
每个客户端的最大流要求矩阵
Figure BDA0003011494310000462
每个客户端的流需要矩阵
Figure BDA0003011494310000463
***处于安全状态。
流分配处于稳定状态。
--------------
实验22:客户端C1从服务器N1请求20个流。
--------------
可用流
Figure BDA0003011494310000464
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000465
每个客户端的最大流要求矩阵
Figure BDA0003011494310000466
每个客户端的流需要矩阵
Figure BDA0003011494310000467
Figure BDA0003011494310000471
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验23:客户端C1从服务器N1请求30个流。
--------------
可用流
Figure BDA0003011494310000472
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000473
每个客户端的最大流要求矩阵
Figure BDA0003011494310000474
每个客户端的流需要矩阵
Figure BDA0003011494310000475
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验24:客户端C1从服务器N1请求40个流。
--------------
可用流
Figure BDA0003011494310000481
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000482
每个客户端的最大流要求矩阵
Figure BDA0003011494310000483
每个客户端的流需要矩阵
Figure BDA0003011494310000484
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验25:客户端C1从服务器N2请求10个流。
--------------
可用流
Figure BDA0003011494310000485
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000486
每个客户端的最大流要求矩阵
Figure BDA0003011494310000487
Figure BDA0003011494310000491
每个客户端的流需要矩阵
Figure BDA0003011494310000492
***处于安全状态。
流分配处于稳定状态。
--------------
实验26:客户端C1从服务器N2请求20个流。
--------------
可用流
Figure BDA0003011494310000493
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000494
每个客户端的最大流要求矩阵
Figure BDA0003011494310000495
每个客户端的流需要矩阵
Figure BDA0003011494310000496
***处于安全状态。
流分配处于稳定状态。
--------------
实验27:客户端C1从服务器N2请求30个流。
--------------
可用流
Figure BDA0003011494310000501
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000502
每个客户端的最大流要求矩阵
Figure BDA0003011494310000503
每个客户端的流需要矩阵
Figure BDA0003011494310000504
***处于安全状态。
流分配处于稳定状态。
--------------
实验28:客户端C1从服务器N2请求40个流。
--------------
可用流
Figure BDA0003011494310000505
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000506
Figure BDA0003011494310000511
每个客户端的最大流要求矩阵
Figure BDA0003011494310000512
每个客户端的流需要矩阵
Figure BDA0003011494310000513
***处于安全状态。
流分配处于稳定状态。
--------------
实验29:客户端C1从服务器N3请求10个流。
--------------
可用流
Figure BDA0003011494310000514
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000515
每个客户端的最大流要求矩阵
Figure BDA0003011494310000516
每个客户端的流需要矩阵
Figure BDA0003011494310000517
***处于安全状态。
流分配处于稳定状态。
--------------
实验30:客户端C1从服务器N3请求20个流。
--------------
可用流
Figure BDA0003011494310000521
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000522
每个客户端的最大流要求矩阵
Figure BDA0003011494310000523
每个客户端的流需要矩阵
Figure BDA0003011494310000524
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000525
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000526
Figure BDA0003011494310000531
每个客户端的最大流要求矩阵
Figure BDA0003011494310000532
每个客户端的流需要矩阵
Figure BDA0003011494310000533
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验31:客户端C1从服务器N3请求30个流。
--------------
可用流
Figure BDA0003011494310000534
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000535
每个客户端的最大流要求矩阵
Figure BDA0003011494310000536
每个客户端的流需要矩阵
Figure BDA0003011494310000537
Figure BDA0003011494310000541
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000542
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000543
每个客户端的最大流要求矩阵
Figure BDA0003011494310000544
每个客户端的流需要矩阵
Figure BDA0003011494310000545
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验32:客户端C1从服务器N3请求40个流。
--------------
可用流
Figure BDA0003011494310000546
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000551
每个客户端的最大流要求矩阵
Figure BDA0003011494310000552
每个客户端的流需要矩阵
Figure BDA0003011494310000553
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000554
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000555
每个客户端的最大流要求矩阵
Figure BDA0003011494310000556
每个客户端的流需要矩阵
Figure BDA0003011494310000557
Figure BDA0003011494310000561
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验33:客户端C2从服务器N0请求10个流。
--------------
可用流
Figure BDA0003011494310000562
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000563
每个客户端的最大流要求矩阵
Figure BDA0003011494310000564
每个客户端的流需要矩阵
Figure BDA0003011494310000565
***处于安全状态。
流分配处于稳定状态。
--------------
实验34:客户端C2从服务器N0请求20个流。
--------------
可用流
Figure BDA0003011494310000566
Figure BDA0003011494310000571
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000572
每个客户端的最大流要求矩阵
Figure BDA0003011494310000573
每个客户端的流需要矩阵
Figure BDA0003011494310000574
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000575
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000576
每个客户端的最大流要求矩阵
Figure BDA0003011494310000577
每个客户端的流需要矩阵
Figure BDA0003011494310000578
Figure BDA0003011494310000581
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验35:客户端C2从服务器N0请求30个流。
--------------
可用流
Figure BDA0003011494310000582
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000583
每个客户端的最大流要求矩阵
Figure BDA0003011494310000584
每个客户端的流需要矩阵
Figure BDA0003011494310000585
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000586
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000591
每个客户端的最大流要求矩阵
Figure BDA0003011494310000592
每个客户端的流需要矩阵
Figure BDA0003011494310000593
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验36:客户端C2从服务器N0请求40个流。
--------------
可用流
Figure BDA0003011494310000594
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000595
每个客户端的最大流要求矩阵
Figure BDA0003011494310000596
每个客户端的流需要矩阵
Figure BDA0003011494310000601
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000602
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000603
每个客户端的最大流要求矩阵
Figure BDA0003011494310000604
每个客户端的流需要矩阵
Figure BDA0003011494310000605
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验37:客户端C2从服务器N1请求10个流。
--------------
可用流
Figure BDA0003011494310000611
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000612
每个客户端的最大流要求矩阵
Figure BDA0003011494310000613
每个客户端的流需要矩阵
Figure BDA0003011494310000614
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000615
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000616
每个客户端的最大流要求矩阵
Figure BDA0003011494310000617
每个客户端的流需要矩阵
Figure BDA0003011494310000621
***处于安全状态。
流分配处于稳定状态。
--------------
实验38:客户端C2从服务器N1请求20个流。
--------------
可用流
Figure BDA0003011494310000622
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000623
每个客户端的最大流要求矩阵
Figure BDA0003011494310000624
每个客户端的流需要矩阵
Figure BDA0003011494310000625
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000626
Figure BDA0003011494310000631
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000632
每个客户端的最大流要求矩阵
Figure BDA0003011494310000633
每个客户端的流需要矩阵
Figure BDA0003011494310000634
***处于安全状态。
流分配处于稳定状态。
--------------
实验39:客户端C2从服务器N1请求30个流。
--------------
可用流
Figure BDA0003011494310000635
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000636
每个客户端的最大流要求矩阵
Figure BDA0003011494310000637
每个客户端的流需要矩阵
Figure BDA0003011494310000641
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000642
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000643
每个客户端的最大流要求矩阵
Figure BDA0003011494310000644
每个客户端的流需要矩阵
Figure BDA0003011494310000645
***处于安全状态。
流分配处于稳定状态。
--------------
实验40:客户端C2从服务器N1请求40个流。
--------------
可用流
Figure BDA0003011494310000646
Figure BDA0003011494310000651
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000652
每个客户端的最大流要求矩阵
Figure BDA0003011494310000653
每个客户端的流需要矩阵
Figure BDA0003011494310000654
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000655
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000656
每个客户端的最大流要求矩阵
Figure BDA0003011494310000657
每个客户端的流需要矩阵
Figure BDA0003011494310000658
Figure BDA0003011494310000661
***处于安全状态。
流分配处于稳定状态。
--------------
实验41:客户端C2从服务器N2请求10个流。
--------------
可用流
Figure BDA0003011494310000662
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000663
每个客户端的最大流要求矩阵
Figure BDA0003011494310000664
每个客户端的流需要矩阵
Figure BDA0003011494310000665
***处于安全状态。
流分配处于稳定状态。
--------------
实验42:客户端C2从服务器N2请求20个流。
--------------
可用流
Figure BDA0003011494310000671
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000672
每个客户端的最大流要求矩阵
Figure BDA0003011494310000673
每个客户端的流需要矩阵
Figure BDA0003011494310000674
***处于安全状态。
流分配处于稳定状态。
--------------
实验43:客户端C2从服务器N2请求30个流。
--------------
可用流
Figure BDA0003011494310000675
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000676
每个客户端的最大流要求矩阵
Figure BDA0003011494310000677
每个客户端的流需要矩阵
Figure BDA0003011494310000681
***处于安全状态。
流分配处于稳定状态。
--------------
实验44:客户端C2从服务器N2请求40个流。
--------------
可用流
Figure BDA0003011494310000682
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000683
每个客户端的最大流要求矩阵
Figure BDA0003011494310000684
每个客户端的流需要矩阵
Figure BDA0003011494310000685
***处于安全状态。
流分配处于稳定状态。
--------------
实验45:客户端C2从服务器N3请求10个流。--------------
可用流
Figure BDA0003011494310000691
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000692
每个客户端的最大流要求矩阵
Figure BDA0003011494310000693
每个客户端的流需要矩阵
Figure BDA0003011494310000694
***处于安全状态。
流分配处于稳定状态。
--------------
实验46:客户端C2从服务器N3请求20个流。
--------------
可用流
Figure BDA0003011494310000695
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000696
每个客户端的最大流要求矩阵
Figure BDA0003011494310000701
每个客户端的流需要矩阵
Figure BDA0003011494310000702
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000703
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000704
每个客户端的最大流要求矩阵
Figure BDA0003011494310000705
每个客户端的流需要矩阵
Figure BDA0003011494310000706
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验47:客户端C2从服务器N3请求30个流。
--------------
可用流
Figure BDA0003011494310000711
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000712
每个客户端的最大流要求矩阵
Figure BDA0003011494310000713
每个客户端的流需要矩阵
Figure BDA0003011494310000714
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000715
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000716
每个客户端的最大流要求矩阵
Figure BDA0003011494310000717
Figure BDA0003011494310000721
每个客户端的流需要矩阵
Figure BDA0003011494310000722
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。
--------------
实验48:客户端C2从服务器N3请求40个流。
--------------
可用流
Figure BDA0003011494310000723
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000724
每个客户端的最大流要求矩阵
Figure BDA0003011494310000725
每个客户端的流需要矩阵
Figure BDA0003011494310000726
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
***未处于安全状态。
在许可负借用之后,重新计算流分配状态....
可用流
Figure BDA0003011494310000731
每个客户端的流分配矩阵(当前分配)
Figure BDA0003011494310000732
每个客户端的最大流要求矩阵
Figure BDA0003011494310000733
每个客户端的流需要矩阵
Figure BDA0003011494310000734
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
***处于安全状态。
流分配处于稳定状态。

Claims (20)

1.一种用于将服务器的资源分配给连接到所述服务器的客户端并从所述服务器恢复数据的方法,所述方法包括:
从客户端接收对恢复借用的请求,其中每个所述恢复借用对应于从所述服务器读取的数据的量;
确定可用于所述客户端的借用的数量,其中所述可用于所述客户端的借用的数量考虑已分发给所述客户端的恢复借用;
基于所述请求和所述可用于所述客户端的借用的数量来分发借用。
2.根据权利要求1所述的方法,还包括以下中的至少一者:
分发等于所述客户端所请求的恢复借用的数量的恢复借用;
分发大于所述客户端所请求的恢复借用的数量的恢复借用;
分发小于所述客户端所请求的恢复借用的数量的恢复借用;
分发零恢复借用给所述客户端;或
分发负恢复借用给所述客户端。
3.根据权利要求1所述的方法,还包括基于分发给所述客户端的恢复借用的数量来确定客户端高速缓存的大小。
4.根据权利要求1所述的方法,还包括:在所述请求中包括预取标志,其中所述预取标志指示在所述服务器上的数据被所述客户端连续访问。
5.根据权利要求1所述的方法,还包括确定平均消耗1%的CPU的读取的数量。
6.根据权利要求5所述的方法,还包括:基于消耗1%的CPU的读取的数量以及所述CUP的平均空闲百分比来确定平均每个核所允许的读取,以及基于客户端连接的数量来确定每个客户端的最大借用。
7.根据权利要求6所述的方法,还包括:基于应用于所述每个客户端的最大借用的调谐因子来确定计算的每个客户端的借用的数量。
8.根据权利要求7所述的方法,还包括:以等于所请求的借用的数量和所计算的借用的数量中的最小值的数量分发所述恢复借用。
9.根据权利要求7所述的方法,还包括:以等于所请求的借用的数量和所计算的借用的数量中的最大值的数量分发所述恢复借用。
10.根据权利要求1所述的方法,还包括:当处理器的每个核的平均空闲百分比小于预定阈值时,节流所有客户端。
11.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质包括计算机可执行指令,所述计算机可执行指令用于在被执行时实现用于将服务器的资源分配给连接到所述服务器的客户端并从所述服务器恢复数据的方法,所述方法包括:
从客户端接收对恢复借用的请求,其中每个所述恢复借用对应于从所述服务器读取的数据的量;
确定可用于所述客户端的借用的数量,其中所述可用于所述客户端的借用的数量考虑已分发给所述客户端的恢复借用;
基于所述请求和所述可用于所述客户端的借用的数量来分发借用。
12.根据权利要求11所述的非暂时性计算机可读介质,还包括以下中的至少一者:
分发等于所述客户端所请求的恢复借用的数量的恢复借用;
分发大于所述客户端所请求的恢复借用的数量的恢复借用;
分发小于所述客户端所请求的恢复借用的数量的恢复借用;
分发零恢复借用给所述客户端;或
分发负恢复借用给所述客户端。
13.根据权利要求11所述的非暂时性计算机可读介质,还包括基于分发给所述客户端的恢复借用的数量来确定客户端高速缓存的大小。
14.根据权利要求11所述的非暂时性计算机可读介质,还包括:在所述请求中包括预取标志,其中所述预取标志指示在所述服务器上的数据被所述客户端连续访问。
15.根据权利要求11所述的非暂时性计算机可读介质,还包括确定平均消耗1%的CPU的读取的数量。
16.根据权利要求15所述的非暂时性计算机可读介质,还包括:基于消耗1%的CPU的读取的数量以及所述CUP的平均空闲百分比来确定平均每个核所允许的读取,以及基于客户端连接的数量来确定每个客户端的最大借用。
17.根据权利要求16所述的非暂时性计算机可读介质,还包括:基于应用于所述每个客户端的最大借用的调谐因子来确定计算的每个客户端的借用的数量。
18.根据权利要求16所述的非暂时性计算机可读介质,还包括:以等于所请求的借用的数量和所计算的借用的数量中的最小值的数量分发所述恢复借用。
19.根据权利要求16所述的非暂时性计算机可读介质,还包括:以等于所请求的借用的数量和所计算的借用的数量中的最大值的数量分发所述恢复借用。
20.一种用于在客户端从服务器请求恢复借用时执行资源分配的方法,所述方法包括:
确定平均消耗1%的处理器的读取的数量;
通过将所述消耗1%的处理器的读取的数量与每个处理器的每个核的平均空闲百分比相乘来确定每个核所允许的读取的平均数量;
通过将所述每个核所允许的读取的平均数量乘以核的数量再除以客户端连接的数量来确定每个客户端借用的最大数量;
对所述每个客户端借用的最大数量进行调谐来获得计算的每个客户端借用的数量;以及
以等于所请求的恢复借用与所计算的借用的数量之间的最小值的量来许可所述请求。
CN201980066453.5A 2018-10-08 2019-07-29 使用恢复借用的资源分配 Pending CN112805684A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/154,518 US10630602B1 (en) 2018-10-08 2018-10-08 Resource allocation using restore credits
US16/154,518 2018-10-08
PCT/US2019/043976 WO2020076394A1 (en) 2018-10-08 2019-07-29 Resource allocation using restore credits

Publications (1)

Publication Number Publication Date
CN112805684A true CN112805684A (zh) 2021-05-14

Family

ID=67551451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980066453.5A Pending CN112805684A (zh) 2018-10-08 2019-07-29 使用恢复借用的资源分配

Country Status (5)

Country Link
US (2) US10630602B1 (zh)
CN (1) CN112805684A (zh)
DE (1) DE112019005042T5 (zh)
GB (1) GB2591928B (zh)
WO (1) WO2020076394A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990447B1 (en) * 2018-07-12 2021-04-27 Lightbits Labs Ltd. System and method for controlling a flow of storage access requests
CN112260955B (zh) * 2020-09-18 2022-11-11 苏州浪潮智能科技有限公司 一种混合读写流量控制方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040267932A1 (en) * 2003-06-30 2004-12-30 Microsoft Corporation System and method for dynamically allocating resources in a client/server environment
WO2005079001A1 (en) * 2004-02-16 2005-08-25 Christopher Michael Davies Network architecture
CN101211289A (zh) * 2006-12-26 2008-07-02 国际商业机器公司 恢复操作管理***和方法

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5453982A (en) 1994-08-29 1995-09-26 Hewlett-Packard Company Packet control procedure between a host processor and a peripheral unit
US5956321A (en) 1995-03-16 1999-09-21 Kabushiki Kaisha Toshiba Stream scheduling system for real time stream server
US5586121A (en) * 1995-04-21 1996-12-17 Hybrid Networks, Inc. Asymmetric hybrid access system and method
US5812545A (en) 1996-01-04 1998-09-22 Orion Atlantic, L.P. Full mesh satellite-based multimedia networking system
US5778320A (en) 1996-10-04 1998-07-07 Motorola, Inc. Method for allocating communication resources among groups of communication units
US6438141B1 (en) 1998-04-20 2002-08-20 Sun Microsystems, Inc. Method and management of communications over media of finite bandwidth
US6459901B1 (en) 1999-07-01 2002-10-01 At&T Corp. Wireless network resource allocation
US6467024B1 (en) * 1999-09-07 2002-10-15 International Business Machines Corporation Accessing data volumes from data storage libraries in a redundant copy synchronization token tracking system
US6502165B1 (en) * 1999-12-03 2002-12-31 International Business Machines Corporation Balanced access to data volumes with redundant copies stored in data storage libraries
US6625709B2 (en) 2000-10-30 2003-09-23 Microsoft Corporation Fair share dynamic resource allocation scheme with a safety buffer
CN1294514C (zh) 2001-08-20 2007-01-10 信息中心科技有限公司 高效的计算机文件备份***和方法
US7539735B2 (en) * 2002-03-06 2009-05-26 International Business Machines Corporation Multi-session no query restore
US7398557B2 (en) * 2002-09-13 2008-07-08 Sun Microsystems, Inc. Accessing in a rights locker system for digital content access control
US7539199B2 (en) 2003-02-21 2009-05-26 Gireesh Shrimali Switch fabric scheduling with fairness and priority consideration
US7269697B1 (en) * 2003-05-07 2007-09-11 Avago Technologies General Ip (Singapore) Pte. Ltd. Apparatus and methodology for an input port scheduler
US7519725B2 (en) 2003-05-23 2009-04-14 International Business Machines Corporation System and method for utilizing informed throttling to guarantee quality of service to I/O streams
DE60335373D1 (de) * 2003-10-06 2011-01-27 Ericsson Telefon Ab L M Koordinierte Datenflusssteuerung und Datenpufferteilung in UMTS
US7478158B1 (en) * 2004-03-01 2009-01-13 Adobe Systems Incorporated Bandwidth management system
US7583658B1 (en) 2004-06-17 2009-09-01 Cisco Technology, Inc. Signal processing allocation using credit prediction
US7493426B2 (en) * 2005-01-31 2009-02-17 International Business Machines Corporation Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control
US7853774B1 (en) * 2005-03-25 2010-12-14 Tilera Corporation Managing buffer storage in a parallel processing environment
EP1762935B1 (de) 2005-09-12 2010-02-17 Siemens Aktiengesellschaft Verfahren zur Steuerung eines Zugriffs auf Ressourcen eines Datenverarbeitungssystems und Steuerungsprogramm
US7698478B2 (en) * 2006-09-19 2010-04-13 Apple Inc. Managed credit update
US7872975B2 (en) 2007-03-26 2011-01-18 Microsoft Corporation File server pipelining with denial of service mitigation
US20080307094A1 (en) * 2007-06-11 2008-12-11 Olli Karonen Association of peer-to-peer contribution credits with multiple devices
US7707248B2 (en) 2007-06-25 2010-04-27 Microsoft Corporation Credit-based peer-to-peer storage
US20090171812A1 (en) 2007-12-31 2009-07-02 Apple Inc. Media streams and media store
US8306036B1 (en) 2008-06-20 2012-11-06 F5 Networks, Inc. Methods and systems for hierarchical resource allocation through bookmark allocation
US20100031157A1 (en) 2008-07-30 2010-02-04 Robert Neer System that enables a user to adjust resources allocated to a group
US8374576B2 (en) 2008-12-04 2013-02-12 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for generating resource utilization alerts through communication terminals
US8045472B2 (en) * 2008-12-29 2011-10-25 Apple Inc. Credit management when resource granularity is larger than credit granularity
US20120327779A1 (en) 2009-06-12 2012-12-27 Cygnus Broadband, Inc. Systems and methods for congestion detection for use in prioritizing and scheduling packets in a communication network
US8085801B2 (en) 2009-08-08 2011-12-27 Hewlett-Packard Development Company, L.P. Resource arbitration
US20110184998A1 (en) * 2010-01-22 2011-07-28 Palahnuk Samuel L Universally accessible encrypted internet file system for wired and wireless computing devices supplanting synchronization, backup and email file attachment
US8381217B1 (en) 2010-04-30 2013-02-19 Netapp, Inc. System and method for preventing resource over-commitment due to remote management in a clustered network storage system
US10200493B2 (en) * 2011-10-17 2019-02-05 Microsoft Technology Licensing, Llc High-density multi-tenant distributed cache as a service
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US8763154B2 (en) * 2012-01-23 2014-06-24 Verizon Patent And Licensing Inc. Federated authentication
US9619127B2 (en) 2012-04-17 2017-04-11 Netzero Wireless, Inc. User controlled data speed selector systems and methods
US9507639B2 (en) * 2012-05-06 2016-11-29 Sandisk Technologies Llc Parallel computation with multiple storage devices
US9495379B2 (en) 2012-10-08 2016-11-15 Veritas Technologies Llc Locality aware, two-level fingerprint caching
US9055078B2 (en) * 2013-01-10 2015-06-09 International Business Machines Corporation Token-based flow control of messages in a parallel computer
US20150007189A1 (en) 2013-06-29 2015-01-01 Robert de Gruijl Service rate redistribution for credit-based arbitration
US20160005007A1 (en) 2014-07-04 2016-01-07 Flashback Survey, Inc. Methods and systems for using scanable codes to obtain maintenance and reminder services
US10419621B2 (en) 2014-11-14 2019-09-17 Tracfone Wireless, Inc. Methods, systems and applications for managing wireless services on a wireless device
CN111050007A (zh) 2015-05-11 2020-04-21 华为技术有限公司 一种策略和计费执行功能装置、在线计费装置及在线计费方法
WO2017070797A1 (en) 2015-10-30 2017-05-04 Investel Capital Corporation Data network access selection, migration and quality management systems and methods
US10115214B2 (en) 2015-11-03 2018-10-30 Verizon Patent And Licensing Inc. Shared data splitting interface
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US20170208120A1 (en) 2016-01-15 2017-07-20 Google Inc. Probabilistic throttling
US10146665B2 (en) 2016-03-24 2018-12-04 Oracle International Corporation Systems and methods for providing dynamic and real time simulations of matching resources to requests
US10536482B2 (en) 2017-03-26 2020-01-14 Microsoft Technology Licensing, Llc Computer security attack detection using distribution departure
US11500681B2 (en) * 2017-06-29 2022-11-15 Intel Corporation Technologies for managing quality of service platform interconnects
US10469395B2 (en) * 2017-08-31 2019-11-05 Hewlett Packard Enterprise Development Lp Packet transmission credit allocation
US20190348158A1 (en) 2018-05-11 2019-11-14 Michigan Health Information Network Shared Services Systems and methods for managing data privacy
US11201828B2 (en) * 2018-10-08 2021-12-14 EMC IP Holding Company LLC Stream allocation using stream credits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040267932A1 (en) * 2003-06-30 2004-12-30 Microsoft Corporation System and method for dynamically allocating resources in a client/server environment
WO2005079001A1 (en) * 2004-02-16 2005-08-25 Christopher Michael Davies Network architecture
CN101211289A (zh) * 2006-12-26 2008-07-02 国际商业机器公司 恢复操作管理***和方法

Also Published As

Publication number Publication date
US10630602B1 (en) 2020-04-21
DE112019005042T5 (de) 2021-09-16
WO2020076394A1 (en) 2020-04-16
GB202104643D0 (en) 2021-05-12
GB2591928A (en) 2021-08-11
US11005776B2 (en) 2021-05-11
US20200112520A1 (en) 2020-04-09
US20200228461A1 (en) 2020-07-16
GB2591928B (en) 2023-05-17

Similar Documents

Publication Publication Date Title
US11593152B1 (en) Application hosting in a distributed application execution system
US9600337B2 (en) Congestion avoidance in network storage device using dynamic weights
Chowdhury et al. Leveraging endpoint flexibility in data-intensive clusters
KR101957006B1 (ko) 네트워크 액세스가능 블록 저장을 위한 조정된 승인 제어
KR101885688B1 (ko) 낮은 지연속도 데이터 액세스를 위한 데이터 스트림의 분할
US11936568B2 (en) Stream allocation using stream credits
US9772958B2 (en) Methods and apparatus to control generation of memory access requests
US11765099B2 (en) Resource allocation using distributed segment processing credits
CN108900626B (zh) 一种云环境下数据存储方法、装置及***
CN106713028B (zh) 业务降级方法、装置和分布式任务调度***
Bok et al. An efficient MapReduce scheduling scheme for processing large multimedia data
US20200385726A1 (en) Oversubscription scheduling
US20140351550A1 (en) Memory management apparatus and method for threads of data distribution service middleware
CN106164888A (zh) 用于最小化工作负荷空闲时间和工作负荷间干扰的网络和存储i/o请求的排序方案
CN112805684A (zh) 使用恢复借用的资源分配
CN110178119B (zh) 处理业务请求的方法、装置与存储***
CN108228323B (zh) 基于数据本地性的Hadoop任务调度方法及装置
KR101661475B1 (ko) 이기종 클러스터 상에서 하둡 부하 분산 방법, 이를 수행하기 위한 기록 매체 및 하둡 맵리듀스 시스템
Chen et al. A real-time scheduling strategy based on processing framework of Hadoop
CN106033434A (zh) 基于数据规模和流行程度的虚拟资产数据副本处理方法
US10135750B1 (en) Satisfaction-ratio based server congestion control mechanism
US11048554B1 (en) Correlated volume placement in a distributed block storage service
Shan et al. Heterogeneous MacroTasking (HeMT) for Parallel Processing in the Public Cloud
Yang et al. A New MapReduce Framework Based on Virtual IP Mechanism and Load Balancing Strategy

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination