使用分布式分段处理借用的资源分配的制作方法

文档序号:25085741发布日期:2021-05-18 18:27阅读:98来源:国知局
使用分布式分段处理借用的资源分配的制作方法

1.本发明的实施方式涉及用于分配资源的系统和方法。更具体地,本发明的实施方式涉及用于在执行数据保护操作时进行资源分配的系统和方法,所述数据保护操作诸如分布式分段处理(distributed segment processing,dsp)和/或去重。附录a构成本申请的一部分并且通过引用以其整体并入本申请中。


背景技术:

2.在单个节点或分布式/超出尺寸范围的集群环境中,分配资源可能是具有挑战性的任务。当尝试确保将资源公平地分配给使用可用资源的所有客户端时,该任务变得更复杂。例如,任何一个客户端都不应该能够具有可用资源的不公平的大份额。同时,需要满足服务质量(qos)要求。
3.更具体地,数据保护操作(例如,备份、恢复)通常与资源分配问题和服务质量(qos)问题相关联。当一些客户端正在使用过多的资源而其他客户端因此被忽视或不能获得必要的资源时,这些问题就会出现。另外,当对资源的需求超过节点或集群所能承受的时,qos通常受损。为了避免这种状况或校正这种状况,需要在任一特定时间节流来自任一特定客户端的请求。因此,需要用于公平地分配资源而同时确保或满足服务质量要求的系统和方法。
附图说明
4.为了描述能够获得本申请的至少一些方面的方式,将参考在附图中示出的本申请的具体实施方式来进行更具体的描述。应理解这些附图仅示出本发明的示例性实施方式而因此不认为是限制本发明的范围,将通过使用附图利用附加的特殊性和细节来描述和解释本发明的实施方式,附图中:
5.图1示出了配置成分配资源给客户端的服务器的示例;
6.图2示出了使用分段借用来将数据转发到服务器的客户端的示例;
7.图3示出了用于分配包括在服务器或集群中处理或写入的资源的方法的示例;
8.图4是用于使用由服务器或集群许可的借用的方法的示例;
9.图5是用于在诸如分段处理的数据保护操作期间执行资源分配的方法的示例;
10.图6进一步示出了在集群资源或服务器资源的情况下包括流分配的资源分配;
11.图7a示出了用于在计算环境中执行资源分配、特别是用于分配流的方法的示例;以及
12.图7b示出了用于评估节点或服务器或集群的流分配状态的方法的示例;以及
13.图7c进一步示出了图7b的用于评估流分配状态的方法。
具体实施方式
14.本发明的实施方式涉及用于执行数据保护操作的系统和方法。数据保护操作的示
例包括、但不限于资源分配操作,资源分配操作包括流分配、读取分配、分段处理分配等。数据保护操作还可以包括备份操作、恢复操作、去重操作、镜像操作、数据复制操作等或其组合。
15.本发明的实施方式涉及用于在计算环境中分配资源的系统和方法。本发明的实施方式还涉及在资源分配的情况下用于测量和改善服务质量以及用于对客户端节流的系统和方法。本发明的实施方式还涉及用于分配流给客户端、以及分配分布式分段处理(dsp)借用(credit)的系统和方法。
16.在一个示例中,服务器的集群(或单个服务器或节点)可以具有能够分配给客户端的资源。这些资源包括流、读取、写入、处理、去重等。特定服务器例如可能提供x个流、或一定数量的读取/写入。特定服务器或集群能够执行一定量的处理、例如分布式分段处理(dsp),该处理可以单独地执行或者可以作为另一数据保护操作的一部分来执行,该另一数据保护操作诸如备份操作和/或去重操作。总的来说,集群还可以提供大数量的流、读取/写入、以及处理。本发明的实施方式涉及用于分配这些资源的系统和方法。
17.例如,本发明的实施方式还涉及用于将数据摄入服务器的系统和方法。摄入数据可以包括对数据进行去重、传输数据以及将数据写入到备份中。更具体地,在一些数据保护操作(备份、去重等)期间,客户端可以仅将唯一的数据发送到服务器或者可以仅发送之前没有被备份服务器存储的数据。
18.因此,本发明的实施方式涉及分配dsp借用,该dsp借用可以由客户端使用来执行分布式分段处理。
19.在一个示例中,dsp借用可以与流借用结合。流借用通常与客户端和服务器之间的数据流有关。这些借用可以被一起使用。可替选地,dsp借用还可以考虑流资源,反之亦然。
20.图1示出了计算环境的示例,其中,客户端与服务器(或集群)通信。在该示例中,分配给客户端的资源包括资源122。客户端可能能够使用来自一个或多个服务器的资源122。类似地,服务器可以向多个客户端提供资源122。
21.这些资源122可以包括读取资源、写入资源、处理资源、分段处理资源、流资源等或其组合。资源122被分配,使得服务器或集群以安全分配状态操作。安全分配状态是可以许可所有的资源请求并为所有的资源请求服务直至完成的状态。这可以使用借用系统来实现。为了解释多种场景,存在可以许可的不同类型的借用。然而,每种类型可以与正在被分配的资源有关。不同类型的借用有效地表示对借用请求的不同响应。借用系统可以用于同时分配不同类型的资源和/或同时分配多个资源。
22.例如,由服务器或集群许可的借用的数量可以等于所请求的借用的数量、小于所请求的借用的数量、大于所请求的借用的数量、为零、或为负数。分发零借用或负借用允许服务器完全使用资源但在必要时进行节流。这也允许服务器或集群从不安全状态恢复并返回安全分配状态。举例来说,可以如下描述借用:
23.预取借用:大于客户端所请求的借用的数量。
24.部分借用:小于客户端所请求的借用的数量(但大于0)。
25.相等借用:等于客户端所请求的借用的数量。
26.零借用:等于零,指示当前客户端请求不能被处理。客户端需要等待并重新尝试获得借用。
27.负借用:为负数,指示客户端释放缓存的借用的数量。
28.零借用和负借用允许服务器节流来自客户端的请求。
29.本发明的实施方式还涉及用于将数据摄入服务器的系统和方法。摄入数据可以包括对数据进行去重、传输数据和/或将数据写入到备份中。更具体地,在一些数据保护操作期间,客户端可以仅将唯一的数据发送到服务器或者可以仅发送之前没有被备份服务器存储的数据。
30.在该示例中,图1示出了提供资源122(可以包括向客户端(由客户端102、客户端104、客户端106和客户端108表示)提供)的服务器(例如,数据保护或备份服务器)110。服务器100也可以表示节点的集群或服务器的集群。在一个示例中,客户端102、客户端104、客户端106和客户端108正在向服务器110发送数据流(例如,备份数据或流、恢复流、包括用于处理(诸如去重)的数据的流、等等)/从服务器110接收数据流。例如,客户端102可以正在使用流112备份多个虚拟机、数据库、文件系统、或其他数据类型。类似地,客户端104与流114相关联,客户端106与流116相关联,以及客户端108与流118相关联。
31.在该示例中,假设客户端正在执行分布式分段处理,服务器110配置成分配流借用和/或分段借用给客户端102、客户端104、客户端106和客户端108。在一个示例中,服务器102配置成使用流借用和/或分段借用来执行资源分配。这些借用可以使用资源分配表120来管理。资源分配表120允许确定分配状态(例如,安全、不安全)。每当分发借用时(不管类型如何),分配表120都进行更新,使得可以鉴于随后的针对借用的请求来评估系统的分配状态。
32.在一个示例中,评估对借用的请求以确定同意该请求是否会导致安全分配状态。通常,如果得到的分配状态是安全的,则许可该请求。如果该请求导致不安全分配状态,则拒绝该请求,例如通过分发零借用或通过分发负借用来拒绝该请求。
33.在以下描述中以及仅作为示例,假设1个可用流与1个许可的流借用相关联。类似地,1个分段处理可以表示单元处理分配。换句话说以及仅作为示例,1个借用表示1个流。其他根据资源分配方案的借用可以是不同的。例如,服务器可以为每个借用许可x个资源。如果与所有客户端相关联的所有的流/分段处理可以被完成执行,则服务器110可以向请求客户端许可流借用和/或分段借用。
34.由于服务器110可能不知道特定客户端流什么时候终止,也不知道到该特定客户端完成的时间不同的客户端会再请求多少个借用,服务器110可假设所有的客户端将最终尝试获取它们最大允许的借用、使用这些借用、然后释放这些借用。
35.基于这些假设,服务器可以通过找到客户端的假想的一组借用请求来确定分配状态是否为安全的,该组借用请求将允许每个客户端获取其最大请求的借用以及使用这些借用。如果是不存在这样一组借用请求的状态,这可导致服务器110许可零流借用或负流借用。这可使得接收到这些许可或请求的客户端返回正持有的任何借用。换句话说,许可或分发零借用或负借用的能力允许客户端被节流。在一个示例中,客户端可以自我节流,因为它们可能没有足够的借用或因为它们可能需要返回借用给服务器110。以这种方式,服务器然后尝试回到安全流分配状态,从而许可所请求的借用。
36.在另一示例中,系统可以在这些客户端中划分这些借用。这允许每个客户端请求多达其最大值的借用。然而,仍可以基于处理器状态、处理器使用情况、调谐因子等使客户
端节流。
37.本发明的实施方式可以当由特定分配导致的系统的分配状态为安全时分配资源。如果所提出的分配导致不安全状态,则可以进行分配以使系统返回安全分配状态(例如,通过分发负借用或零借用)。
38.更具体地,本发明的实施方式还涉及用于将数据摄入服务器的系统和方法。摄入数据可以包括对数据进行去重、将数据从客户端传输到服务器以及将数据写入到备份中。更具体地,在一些数据保护操作期间,客户端可以仅将唯一的数据发送到服务器或者可以仅发送之前没有被备份服务器存储的数据。举例来讲,这使用指纹来完成。
39.举例来讲,指纹可以是数据分段的散列。该散列唯一地标识对应的数据。通过识别服务器上还不存在的指纹,可以确定需要被发送到服务器的数据。有利地,发送到服务器的数据量很可能减少。
40.图2示出了执行包括针对分布式分段处理的资源分配的数据保护操作的系统的示例。在一个示例中,分布式分段处理与去重操作和/或备份操作有关。此外,在分布式分段处理中,处理可以是分布式的。例如,客户端可以对数据进行分段和/或为数据生成指纹。服务器可以识别唯一的指纹并因此从由客户端提供的指纹识别唯一的数据。这也允许客户端在备份操作期间仅发送唯一的数据。
41.图2示出了与服务器210协作以执行诸如备份操作的数据保护操作的客户端202。在该示例中,与服务器210连接的客户端202正准备备份数据204。在该操作期间,客户端202和/或服务器210可以执行分布式分段处理操作。
42.更具体地,数据204被分段成分段206并且为每个分段206生成指纹208。然后将指纹208传送到服务器210以进行处理。服务器210可以使用指纹过滤器212来对指纹208与指纹数据库214进行比较。
43.更具体地,服务器210评估指纹208以识别指纹数据库214中未包含的唯一的指纹。该唯一的或新的指纹对应于服务器210之前未备份的数据分段。服务器210然后可以向客户端202指示哪些指纹208是唯一的或新的。然后客户端202可以通过仅发送对应于指纹数据库214中不存在的唯一的指纹的分段来备份数据204。一旦这些分段被添加到服务器210维持的备份中,新的指纹就被添加到指纹数据库214中。在一个示例中,这允许在备份操作的情况下执行分布式分段处理操作。在一个示例中,可以独立于备份操作来执行分布式分段处理。
44.可以使用分布式分段借用(本文中称为分段借用)来执行数据分段处理,分布式分段借用是借用的示例且可以与流借用相同或不同。分段借用反映了与分布式分段处理有关的处理被分布在客户端和服务器之间,如之前所述。分段借用帮助改善系统功能。更具体地,服务器210的cpu或处理器可能被诸如垃圾回收、来自其他客户端的处理请求等的各种任务占据。因此,服务器210可能不能及时处理从客户端202接收的所有指纹。这可能导致指纹没有被过滤或者被部分过滤。因此,客户端202将不得不发送多个请求给服务器210,直至在服务器210上已经处理并过滤了所有指纹。通过使用分段借用来分配资源,该过程被改善,因为客户端清楚什么资源是可用的且能够更好地预期任务的性能。此外,因为资源被更公平地分配给可以与服务器212或集群通信的所有客户端,因此减少了qos问题。通过分发负借用或零借用,例如,本发明的实施方式确保正在利用服务器上的所有去重资源的、具有
高摄入速率的客户端不会延迟其他客户端的处理要求。换句话说,通过使用诸如分段借用的借用,客户端可以被节流或自我节流。
45.图3示出了用于分配资源给客户端的方法的示例。方法300可以开始于准备302数据摄入。如之前所述,准备数据可以包括识别待备份的数据、对数据进行分段以及针对每个分段生成指纹。这允许客户端确定待发送到服务器的指纹的数量。分布式分段处理的这些方面可以由客户端执行。
46.在一个示例中,分段借用可以对应于指纹。因此,所请求的借用的数量可以取决于待发送到服务器用于处理的指纹的数量。可替选地,借用可以基于处理能力(例如,使用cpu的百分比(例如,1%)能够处理多少个指纹)来确定。在这种情况下,客户端可以相应地请求304分段借用。
47.一旦客户端请求了借用,客户端就可以从服务器接收306借用。由服务器许可的借用的数量可以等于由客户端请求的借用的数量、小于由客户端请求的借用的数量、大于由客户端请求的借用的数量、为零或为负数。
48.一旦已经接收到借用,就基于所许可的借用执行308数据保护操作(例如,分布式分段处理、备份操作等)。
49.图4示出了用于使用从服务器或集群接收的借用的方法的示例。在图4的方法中,客户端可以从服务器接收402借用(dsp借用或其他借用类型)。在接收到借用之后,客户端和/或服务器可以使用由服务器许可404的借用来执行数据保护(例如,dsp处理、去重、备份)操作。
50.例如,如果所许可的借用的数量406等于(=)所请求的借用的数量,则客户端可以使用所许可的分段借用来在服务器上查找唯一的指纹。如之前所述,客户端可以对数据进行分段并为数据生成指纹以及将所得到的指纹发送给服务器。发送到服务器的指纹的数量或指纹请求的数量等于所许可的分段借用的数量。如之前所述,这取决于每个借用处理多少个指纹。一个借用可以对应于一个指纹。然而,一次借用可以对应于x次借用。可以使用另一方案。客户端可以单独发送每个指纹到服务器或者可以成批分组地发送指纹到服务器。服务器以分配表来跟踪由客户端获得并使用的借用。
51.如果所许可的借用的数量408>所请求的借用的数量,则客户端使用所许可的分段借用来在服务器上查找唯一的指纹(或者识别不在服务器上的指纹,这表示数据没有被服务器备份)。在这种情况下,发送到服务器的请求或指纹的数量等于所请求的分段借用的数量。客户端可以保留超额借用以用于后续使用或者返回任何未使用的借用。
52.如果所许可的借用的数量410小于(<)所请求的借用的数量,则客户端使用所许可的分段借用来在服务器上查找唯一的指纹。由客户端分发的请求的数量可以使用所许可的分段借用。在这种情况下,客户端可能需要从服务器请求额外的借用来处理任何剩余的指纹。
53.如果所许可的借用的数量412等于0,则客户端被节流且客户端不能执行进一步操作(例如,dsp操作)。其他客户端也可能被节流。客户端或服务器可以在一定时间间隔之后重新尝试以重新尝试请求。可替选地,客户端可以在一定时间段之后分发新请求以获得借用。可替选地,客户端可以尝试改变的请求(例如,请求较少的借用),使得可以执行一些处理。
54.如果所许可的借用的数量412为负值,且如果客户端具有一些缓存的借用,则客户端必须从其缓存的借用扣除所许可的负借用的量且客户端请求被节流。如果客户端不具有任何缓存的借用,则客户端可以忽略所许可的负借用值且仅被节流。在一段时间之后,客户端可以再次尝试获得借用。
55.一旦已经同意请求并且假设客户端没有被节流,服务器就尝试使用从客户端接收到的唯一的指纹来寻找该指纹。然后该唯一的指纹被发送回客户端。然后客户端可以识别对应于该唯一的指纹的分段,压缩这些分段并将这些分段发送回服务器以用于存储为备份。如以下更详细讨论的,分段借用可以考虑流资源。可替选地,客户端可能需要请求流借用以发送数据/指纹给服务器。
56.如果客户端没有更多的数据进行摄入或备份而在高速缓存连接中仍有分段借用,则客户端最终可以通过分发释放借用命令来释放那些借用。然后服务器更新其分配表以对从特定客户端释放的借用进行记账。
57.有利地,一旦客户端接收到分段借用(流借用或其他借用类型),就很可能保证相应的操作,因为分配基于服务器上可用的资源。客户端不需要持续重新尝试并发送请求给服务器直至所有指纹被过滤。因此,操作被更有效且更顺畅地执行。
58.图5示出了借用分配方法500的示例。在另一示例中,可以依据处理指纹来定义图5的方法。
59.图5更具体地示出了用于分配分段借用的方法的示例。方法500可以包括不是每次执行方法都执行的步骤或动作。在图5中,平均消耗处理器或核(例如,cpu或中央处理单元)的1%的写入的量或数量被确定或定义502。尽管该数量可以是近似值,但是通过进行数据的经验备份来收集统计数据可以用于限制该数量。在不同大小的各种备份运行期间cpu利用的百分比可以被观察或测量。这些观察或测量可以用于确定消耗1%的数据的写入的平均数量。例如,如果观察到1gb的数据的备份消耗10%的cpu并导致平均10000个写入请求,则可以估计进入服务器的1000个写入请求消耗1%的cpu。该结果可用于确定待分配给请求客户端的分段借用的数量。
60.接着,每个核所允许的写入的平均数量被确定504。在一个示例中,这通过将消耗1%的cpu的写入的数量与每个核的空闲cpu的平均百分比相乘来确定。如果每个核的空闲cpu的平均百分比小于阈值(例如,2%),则许可所有客户端的借用为零或为负数。
61.接着,每个客户端的最大借用被确定506。这可以通过将每个核允许的平均写入乘以cpu核的数量然后再除以客户端连接的数量来确定。每个客户端的最大借用表示客户端可以获取的借用的最大数量。
62.分配表对已经分发给客户端的借用进行记账。例如,如果客户端的最大借用是100个且已经被许可60个,则对50个dsp/写入借用的请求可能导致许可部分借用或零借用或负借用。分配表随着借用被许可、释放等而更新。
63.在一个示例中,每个客户端借用的数量被确定508。这不同于最大借用,因为该动作或步骤可以考虑能够被调节或可配置的调谐因子。该调谐因子允许本发明的实施方式将预留值计入正在分配的资源中。该调谐因子可以为最大dsp/写入借用的50%

70%。
64.接着,借用可以被分发到请求客户端510。举例来讲,所分发的借用的数量可以通过使用所请求的dsp/写入借用和所计算的每个客户端的借用中的最小值来确定。
65.考虑以下示例。如果平均消耗1%的cpu的写入(或指纹处理)的数量为1000个且每个核的空闲cpu的平均百分比为50%,则每个核允许的平均读取为((1000*0.5)=500)。如果cpu核的数量为4个且客户端的数量为10个,则每个客户端的最大借用为((500*4)/10=200)。如果调谐因子为50%,则所计算的每个客户端的借用为(200*0.5=100)。因此,每个客户端的最大借用与调谐的或计算的每个客户端的借用是不同的。
66.然后,如果客户端请求40个dsp/写入借用,则所许可的dsp/写入借用为min(40,100)=40。因此许可40个借用。如果客户端请求预取,则所许可的借用为max(40,100)=100。因此许可100个借用。如果从云进行恢复,则可以忽略预取,在这种情况下,在该示例中所许可的借用可以为40个。
67.每次请求分段借用时,本发明的实施方式都可以确保许可不会导致不安全分配状态。例如,请求超过客户端的最大借用的借用可能导致不安全分配状态。此外,当许可借用时还可以考虑该客户端和其他客户端已经使用的借用。另外,当确定分配状态时,可以确定每个核的空闲cpu的平均百分比。如果该许可将空闲cpu的平均百分比降到低于阈值,则该许可可以是零借用或负借用直至恢复到安全分配状态。
68.以下关于流借用的讨论包括以下内容。参照下面描述的图7b和图7c更详细地描述该分配方法。
69.在一个示例中,使c为系统中客户端的数量,n为系统中节点或服务器的数量。
70.总(最大流)可用性矩阵(tam):长度n的矩阵,指示可用于每个节点的流资源的最大数量。
71.tam[j]=k,存在可用的流资源rj的k个实例。
[0072]
当前分配矩阵(calm):限定当前分配给每个客户端的流资源的数量的c
×
n矩阵。
[0073]
calm[i,j]=k,于是客户端ci当前被分配流资源rj的k个实例。
[0074]
当前可用性矩阵(cam):长度n的矩阵,指示当前可用于每个节点类型的流的数量。其通过将当前分配给每个单独的节点上的所有客户端的流相加并从用于该节点的总最大流中减去相加的结果来确定。
[0075]
cam[j]=tam[j]

(calm[c0]+calm[c1]+

+calm[cn]);
[0076]
当前需求矩阵(cdm):限定当前需求或时间点最大所请求的流的c
×
n矩阵。
[0077]
如果cdm[i,j]=k,则客户端ci可以最多请求流资源rj的k个实例。
[0078]
当前需要矩阵(cnm):指示每个客户端的流借用需要的c
×
n矩阵(需要=需求

已分配)。
[0079]
cnm[i,j]=cdm[i,j]

calm[i,j]。
[0080]
在任一时间点,服务器确定响应于客户端所请求的借用而分配流借用是否是安全的。如果在给定时间点,系统处于安全状态,则所有客户端借用请求可以被满足,即针对所有客户端,它们的流资源需要小于用于系统中所有节点的当前流可用性。
[0081]
cnm[i,j]<cam[j]
[0082]
如果客户端的流需要大于可用的流(cnm[i,j]>cam[j]),则系统被认为是不安全的(不安全分配状态)并且负借用或零借用被许可给客户端,以及做出努力以将系统带到安全/稳定分配状态。
[0083]
以下示例更详细地说明该过程。图6示出了包括节点或服务器602以及客户端604
的集群。更具体地,图6示出了四个节点或服务器:n1、n2、n3和n4。图6还示出了使用服务器602的资源的客户端c1、c2和c3(客户端604)。在该示例中,分配给客户端604的服务器602的资源包括流606。流606可以包括备份流、恢复流、或其他数据流。
[0084]
作为示例,假设在图6中,在每个节点上可用的tam或总最大流如下表示:
[0085]
n1n2n3n460507060
[0086]
因此,n1具有60个用于分配给客户端的流。类似地,n2、n3和n4分别具有50个、70个和60个用于分配给客户端的流。
[0087]
总最大流可以通过考虑服务器上处理器和核的数量以及通过确定流消耗多少处理功率来确定。可以以其他方式、诸如通过测试或通过用户输入来确定总最大流。
[0088]
下面的calm矩阵指示已经分配给客户端c1

c3的流借用。在该示例中,假设客户端c1、c2和c3具有已经分配给它们的以下流借用。
[0089] n1n2n3n4c110202010c210003030c310201000
[0090]
calm
[0091]
cam或当前可用流(或还没分配的流)可以根据上述tam和calm来计算。例如:根据以上tam矩阵,节点n1具有它可以分配的最大60个流。节点n1已经分配给c1、c2和c3各10个流。因此n1上当前可用的总流为:
[0092]
cam[n1]=tam[n1]

(calm[0,c1]+calm[0,c2]+calm[0,c3]),即
[0093]
cam[n1]=60

(10+10+10)=30。
[0094]
类似地,
[0095]
cam[n2]=50

(20+0+20)=10。
[0096]
cam[n3]=70

(20+30+10)=10。
[0097]
cam[n4]=60

(10+30+0)=20。
[0098][0099]
更通常来讲,cam指示哪些节点或服务器正在提供分配给客户端604的流。如前所述,客户端604可以连接到任一服务器602并且因此可以从集群中的任一服务器602请求借用。
[0100]
以下cdm限定在给定时间点的最大客户端流借用请求。换句话说,以下矩阵限定每个客户端在给定时间点可以从每个服务器请求多少个流。这些数量或最大值可以由管理员预先确定或设置。此外,这些数量可以是动态的以及可以基于客户端的数量和/或服务器的数量。当服务器和客户端的数量改变时,该时间点的流借用请求数量可能改变。
[0101][0102]
cdm
[0103]
通过从当前需求矩阵(cdm)减去当前已分配流矩阵(calm),c1、c2和c3所需要的总流借用或cnm可以如下确定:
[0104][0105]
使用以上信息,可以确定每个客户端是否可以获取并使用其最大所请求的流借用。以下格式用于以下讨论,<xx xx xx xx>表示分别与节点n1、n2、n3和n4相关联的流。
[0106]
例如,根据cnm,c1请求并获取n1的20个流借用,n2的10个流借用以及n4的10个流借用,以达到其所请求的最大借用。服务器可以在实际许可请求之前执行该确定。
[0107]
在c1请求并获取之后,现在可用流如下确定:
[0108]
<30 10 10 20>(cam或可用流)

[0109]
<20 10 00 10>(由c1获取的流以达到c1的最大值)=
[0110]
<10 00 10 10>(仍可用的流)
[0111]
因此,集群仍具有n1的10个可用流、n2的00个可用流、n3的10个可用流以及n4的10个可用流。
[0112]
接着,c1终止与流有关的进程并将n1的30个流借用、n2的30个流借用、n3的20个流借用和n4的20个流借用返回给系统。这些是与cdm中的c1行相关联的流。将其加到当前可用流:
[0113]
<10 00 10 10>+<30 30 20 20>=<40 30 30 30>
[0114]
因此,现在集群具有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>,因此系统状态是安全的,以分配和处理下一客户端请求。
[0115]
现在c2要求n1的20个流和n4的10个流。然后c2终止并返回其所有的流借用。在该示例中且在这些步骤之后,可用流为或等于:
[0116]
<40 30 30 30>(在c2的请求之前的当前可用流)

[0117]
<00 20 00 10>(由c2要求的流以达到c2的最大值)=
[0118]
<40 30 30 30>

<00 20 00 10>=<40 10 30 20>(仍可用的流)+
[0119]
<10 20 30 40>(与cdm中的c2行相关联的流)
[0120]
<10 20 30 40>+<40 10 30 20>=<50 30 60 60>(在c2返回流借用之后的可用流)。
[0121]
该<50 30 60 60>小于或等于tam<60 50 70 60>或者用于集群的每个节点的总最大流,即
[0122]
<50 30 60 60><=<60 50 70 60>,因此系统状态是安全的,以分配和处理下一客户端请求。
[0123]
接下来,c3要求10个n2的流和40个n3的流,终止并返回所有流(返回流借用)。这导致以下:
[0124]
<50 30 60 60>(在c3的请求之前的当前可用流)

[0125]
<00 10 40 00>(由c3要求的流以达到c3的最大值)+
[0126]
<10 30 50 00>(由c3返回的流)=
[0127]
<60 50 70 60>(可用流借用)。
[0128]
该<60 50 70 60>小于或等于tam<60 50 70 60>或者用于集群的每个节点的总最大流,即
[0129]
<60 50 70 60><=<60 50 70 60>,因此系统状态是安全的,以分配和处理下一客户端请求。
[0130]
这表明了因为每个客户端都可以获取其所请求的最大流借用并使用流借用,因此如上所述,流分配状态是安全的且可以许可流借用给所有客户端。
[0131]
流分配安全状态指示可以许可或分发流借用。本发明的实施方式预期了多种不同的可请求且可许可的借用。
[0132]
下面的示例说明了这些类型的借用并说明了是否许可借用。
[0133]
示例1:服务器许可“相等”借用。
[0134]
以与之前的示例开始的状态相同的状态开始,假设c3请求节点n3上的10个流借用。在本示例中,存在足够的可用流,使得可以许可借用请求。在许可之后,新的流分配状态如下:
[0135]
节点上的cam或可用流:
[0136] n1n2n3n4可用流30100020
[0137]
当前分配给客户端604的流calm现在如下(这里假设许可了c3的对n3的10个借用的请求):
[0138] n1n2n3n4c110202010c210003030c310202000
[0139]
calm
[0140]
现在,客户端的最大所请求的流如下:
[0141] n1n2n3n4c130302020c210203040c310305000
[0142]
cdm
[0143]
利用该信息,可以确定新的流分配状态是否是安全的。
[0144][0145]
在以上示例中,c1可以获取n1的20个流、n2的10个流和n4的10个流,使用这些流并释放这些流。然后,c2可以获取n2的20个流和n4的10个流,使用这些流并释放这些流。最后,c3可以获取n2的10个流和n3的30个流,使用这些流并释放这些流。因此,该新的分配状态是安全的。
[0146]
因为新的状态是安全的,因此许可了来自c3的对节点n3上的10个流借用的请求。这是服务器许可的流借用等于客户端所请求的流借用的数量的示例。
[0147]
示例2:服务器许可“部分”借用
[0148]
以与之前的示例开始的状态相同的状态开始,假设c3请求n3上的20个流借用。在本示例中,在许可所请求的流借用之前的可用流如下:
[0149]
n1n2n3n430101020
[0150]
在许可流借用之后的可用流如下:
[0151]
n1n2n3n43010

1020
[0152]
由于在许可之后总的可用流的数量小于零,因此服务器可以决定许可10个流借用(这是部分许可,因为请求了20个流借用)。如关于前一示例所述,从n3向c3许可10个流借用导致安全分配状态。这示出了部分许可流借用的示例。
[0153]
示例3:“零”或“负”流借用分配
[0154]
从之前的开始状态,假设客户端c2请求10个来自节点n2的流借用。在本示例中,存在足够的流来许可流借用。假设请求被同意,新的状态将会是:
[0155]
节点上的cam或可用流:
[0156] n1n2n3n4可用流30001020
[0157]
根据初始状态的calm或当前分配的流:
[0158][0159][0160]
calm
[0161]
cdm或该时间点最大所请求的流被确定如下:
[0162] n1n2n3n4c130302020c210203040c310305000
[0163]
cdm
[0164]
现在进行确定来确定新分配状态是否是安全的。假设客户端c1、c2和c3请求来自n2和n3的更多的流借用。
[0165][0166]
在该情况下,c1不能从n2、即从上述cnm获取足够的流,c1需要来自n2的10个流。然而,根据上述cam,n2的可用流的数量为0。此外,c2也不能从n2获取足够的流,c3也不能从n2获取足够的流。
[0167]
本示例中没有客户端能够获取足够的流借用来达到其最大允许的流借用。因此,该状态是不安全的并且服务器602可以节流客户端604中的一个或多个并通过分发负借用来从不安全分配状态恢复。换句话说,服务器602通过节流以及分发负借用来从该不安全状态恢复。
[0168]
例如,服务器n2可以许可负20个流借用给c1。可选地,n2许可零借用给客户端c2和c3(即,客户端c2和c3节流并在一段时间之后重新尝试其请求)。客户端c1将其持有的20个流借用返回给n2,并且执行安全分配状态检查以确定状态是否是安全的。
[0169]
诸如流借用和其他类型的借用的借用用于执行资源分配。流分配方法可以应用于
许多类型的流。流分配方法可以通过向各个客户端许可负借用/零借用来维持稳定流分配状态。此外,本发明的实施方式允许如前所述的不同类型的借用许可。
[0170]
更具体地,流借用可以是预取的。如果客户端未持有流借用(或者即使客户端持有一些流借用)并且如果服务器上存在足够的空闲的流,则服务器可以在客户端请求时许可客户端更多的借用。
[0171]
可以例如基于预期的工作量来请求预取的借用。这可以例如在恢复操作期间应用,在恢复操作时,流借用被预期用于通过读取备份来恢复流。
[0172]
许可的借用还可以用于作出与设定客户端尺寸的高速缓存的尺寸有关的决定。这例如与利用用于恢复操作的流借用提前读取、执行智能提前读取、或使用借用来管理解决方案的成本有关。
[0173]
部分许可借用可以允许部分完成操作。此外,可以通过分发负借用以及从客户端的高速缓存冲刷负数量的借用来从客户端取回流借用。换句话说,如果许可的借用的数量为零或负数,则客户端可以被节流。可以基于所请求的借用的类型来实现更多不同的借用分配方法。
[0174]
图7a示出了用于执行资源分配的方法的示例。在一个示例中,可以定义702或确定与资源分配相关联的各种参数。例如,可以关于每个节点或服务器可以安全地支持多少个流来进行确定。这可以基于处理器/核的数量、内存、写入/读取参数等。例如,可以确定写入之间的关系、处理器或核消耗。如果预定数量的写入或者数据传输速率消耗1%的cpu,则以该传输速率的流可以对应于1个借用。此外,还可以确定每个客户端允许的流的最大数量。
[0175]
方法700的该方面可以一次执行。然而,当系统中增加/移除节点或者当系统中增加/移除客户端时,可以重新评估方法700的该方面。这些值还可以考虑由服务器602执行的可能不涉及流或不涉及正在分配的特定资源的其他功能。此外,这些值还可以能够基于其他因素、例如当日时间来改变。例如,当处理器例如在较慢的时期不被其他任务所需时,可以临时增加可用流的数量。
[0176]
一旦已经定义了资源分配且服务器正在分配资源给客户端,方法700就施行或执行分配方法。例如,可以接收704流借用的请求。如之前所讨论的,该请求被评估,以确定所请求的分配是否会导致安全分配状态。因此,服务器可以通过假设许可该请求来评估706流状态或分配状态。这涉及考虑是否其他客户端还可以被分配其最大借用。如之前所述,在一个实施方式中,假设客户端可以最终请求、使用和释放其允许的最大借用。因此该评估确定如果许可该请求,则分配状态将会如何。
[0177]
然后服务器根据该结果(所确定的分配状态)分发借用708给请求客户端(和/或其他客户端)。如果分配状态是安全的,则服务器可以分发等于该请求或者大于等于该请求的借用。如果分配状态是不安全的,则可以发生部分许可,这仍会导致安全分配状态。如果分配状态是不安全的,则服务器可以分发零或负借用。在一个示例中,零和/或负借用可以分发给任何客户端。
[0178]
图7b示出了评估流状态的更多细节的示例。更具体地,图7b示出了图7a中所示的评估服务器流状态706的示例。因此,方法720示出了评估服务器流状态706的示例。在方法720的示例中,服务器可以计算tam 722,其确定总的可用流。然后服务器可以查找calm 724。calm标识当前被分配给客户端的流。
[0179]
接着,时间点cam被确定726。这通过tam减去calm来确定(cam=tam

calm)。这允许服务器确定多少个流可用于分配。这可以从整个系统的角度和/或基于每个节点或每个服务器来确定。如以上所讨论的,可以基于每个服务器来确定可用流的数量。在一个示例中,这确保特定服务器的资源不会负担过重。另外,在一个实施方式中,这可以给予服务器或集群确定哪些服务器提供或分配资源的灵活性。例如,如果重定向能够导致安全分配状态,则服务器可以将请求重定向到不同的服务器。
[0180]
接着,cdm被确定728以及通过cdm减去calm来确定730cnm(cnm=cdm

calm)。
[0181]
在已经确定该信息之后,进行确定732流分配状态是安全的还是不安全的。如果流分配状态是不安全的,则许可零或负借用740。如果流分配状态是安全的,则许可借用。例如,可以许可部分借用734,可以许可相等借用736,或者可以许可预取借用738。然后分发借用708。在一个示例中,分发借用708可以是方法720的一部分并被并入许可借用734、736、738或740中。
[0182]
图7c示出了确定流分配状态的示例。更具体地,图7c示出了图7b中的确定流分配状态是否安全732的示例。方法748可以针对每个客户端750来执行。从第一客户端750开始,确定752是否cnm大于cdm。因此,如果当前需要不大于当前需求,则状态为不安全754并且分发或许可负借用或零借用,如图7b所示。
[0183]
当cnm大于cdm时,然后在许可客户端的最大流请求之后的流可用性被确定756。该计算可以在好像所请求的借用被许可的情况下执行以确定所得到的状态是否是安全的。此外,在一个实施方式中,所有客户端被当做整体来评估以确定流分配状态是否是安全的。
[0184]
在一个示例中,流可用性(756)通过从当前可用流758的数量(这可以作为整体或者基于每个服务器或节点来进行)减去客户端获取的以达到客户端的最大需求760的流来确定。在需求被处理762之后该结果然后被加到由客户端返回的流。换句话说,在一个示例中,系统在假设客户端所请求的其最大可能的流被许可的情况下进行评估。
[0185]
基于该确定756,关于可用流是否小于总可用矩阵进行确定764。若否,则状态为不安全的766。若是且所有客户端都已经被处理768,则状态是安全的772且如图7b所示可以许可借用。如果没有处理所有客户端,则处理下一客户端770。
[0186]
因此,图7a

图7c示出了用于分配资源的方法的示例,使得系统的分配状态是安全的。当所提出的资源分配(例如,来自客户端的请求)导致不安全分配状态时,则分配可以是零或负数,这允许系统避免不安全分配状态或返回安全分配状态。
[0187]
应当理解的是,可以以很多方式实现本发明,这些方式包括过程、装置、系统、设备、方法、或者诸如计算机可读存储介质的计算机可读介质或计算机网络,在计算机网络中,计算机程序指令通过光通信链接或电通信链接来发送。应用程序可以采用在通用计算机上执行的软件的形式或者可以被硬连线或硬编码在硬件中。在本申请中,这些实现方式、或本发明可以采用的任何其它形式都可以被称为技术。通常,所公开的过程中步骤的顺序可以改变而仍在本发明的范围内。
[0188]
本文所公开的实施方式可以包括使用包括各种计算机硬件或软件模块的专用或通用计算机,如下面更详细讨论的。计算机可以包括处理器和承载指令的计算机存储介质,所述指令在被处理器执行时和/或使得所述指令被处理器执行时,执行本文所公开的方法中的任一者或多者。
[0189]
如上所述,在本发明的范围内的实施方式还包括计算机存储介质,所述计算机存储介质是用于承载或带有其上存储的计算机可执行指令或数据结构的物理介质。这种计算机存储介质可以是能够被通用或专用计算机访问的任何可用的物理介质。
[0190]
以示例而不是限制的方式,这种计算机存储介质可以包括硬件,所述硬件诸如固态硬盘(ssd)、ram、rom、eeprom、cd

rom、闪存、相变内存(“pcm”)、或者其他光盘存储器、磁盘存储器或其他磁存储设备、或者可用于以计算机可执行指令或数据结构的形式存储程序代码的任何其他硬件存储设备,所述计算机可执行指令或数据结构可以被通用或专用计算机系统访问和执行以实现本发明所公开的功能。以上的组合也应该被包括在计算机存储介质的范围内。这些介质也是非暂时性存储介质的示例,尽管本发明的范围未被限定到非暂时性存储介质的这些示例,但是非暂时性存储介质也包含基于云的存储系统和结构。
[0191]
计算机可执行指令包括例如使得通用计算机、专用计算机、或专用处理设备执行某一功能或某一组功能的指令和数据。尽管已经用特定于结构特征和/或方法动作的语言描述了主题,应理解的是,所附权利要求中限定的主题不必限定到上述特定特征或动作。相反,本文所公开的特定特征和动作被披露作为实现权利要求的示例形式。
[0192]
如本文中所使用的,术语“模块”或“组件”可以指在计算系统上执行的软件对象或程序。本文描述的不同的组件、模块、引擎、和服务可以实现为例如作为单独的线程在计算系统上执行的对象或进程。尽管本文描述的系统和方法可以以软件实现,但是以硬件或者软件和硬件的组合实现也是可以的且可预期的。在本申请中,“计算实体”可以是如本文之前所限定的任何计算系统、或者在计算系统上运行的任何模块或模块组合。
[0193]
在至少一些实例中,提供硬件处理器,该硬件处理器可操作成执行用于执行方法或过程(诸如本文所公开的方法和过程)的可执行指令。该硬件处理器可以包括或不包括其他硬件、诸如本文所公开的计算设备和系统的元件。
[0194]
在计算环境方面,本发明的实施方式可以在客户端

服务器环境、网络环境或本地环境、或任何其他合适的环境中执行。用于本发明的至少一些实施方式的合适的操作环境包括云计算环境,在云计算环境中,客户端、服务器、和目标虚拟机中的一者或多者可以驻留并操作在云环境中。
[0195]
本发明可以以其他特定形式实现而不脱离其精神或实质特征。所描述的实施方式在各方面均被考虑仅作为说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由之前的描述来指示。落入权利要求的等价含义和等价范围内的所有改变均被包含在权利要求的范围内。
[0196]
说明书的附录a
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203][0204]
结果:
[0205]
可用流
[0206][0207]
每个客户端的流分配矩阵(当前分配)
[0208]
[0209]
每个客户端的最大流要求矩阵
[0210]
每个客户端的流需要矩阵
[0211][0212]
系统处于安全状态。
[0213]
流分配处于稳定状态。
[0214]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0215]
实验1:客户端c0从服务器n0请求10个流。
[0216]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0217]
可用流
[0218][0219]
每个客户端的流分配矩阵(当前分配)
[0220][0221]
每个客户端的最大流要求矩阵
[0222]
每个客户端的流需要矩阵
[0223][0224]
系统处于安全状态。
[0225]
流分配处于稳定状态。
[0226]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0227]
实验2:客户端c0从服务器n0请求20个流。
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0228]
可用流
[0229][0230]
每个客户端的流分配矩阵(当前分配)
[0231][0232]
每个客户端的最大流要求矩阵
[0233][0234]
每个客户端的流需要矩阵
[0235][0236]
系统处于安全状态。
[0237]
流分配处于稳定状态。
[0238]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0239]
实验3:客户端c0从服务器n0请求30个流。
[0240]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0241]
可用流
[0242][0243]
每个客户端的流分配矩阵(当前分配)
[0244][0245]
每个客户端的最大流要求矩阵
[0246][0247]
每个客户端的流需要矩阵
[0248][0249]
系统处于安全状态。
[0250]
流分配处于稳定状态。
[0251]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0252]
实验4:客户端c0从服务器n0请求40个流。
[0253]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0254]
可用流
[0255][0256]
每个客户端的流分配矩阵(当前分配)
[0257][0258]
每个客户端的最大流要求矩阵
[0259][0260][0261]
每个客户端的流需要矩阵
[0262][0263]
系统处于安全状态。
[0264]
流分配处于稳定状态。
[0265]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0266]
实验5:客户端c0从服务器n1请求10个流。
[0267]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0268]
可用流
[0269][0270]
每个客户端的流分配矩阵(当前分配)
[0271][0272]
每个客户端的最大流要求矩阵
[0273][0274]
每个客户端的流需要矩阵
[0275][0276]
系统处于安全状态。
[0277]
流分配处于稳定状态。
[0278]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0279]
实验6:客户端c0从服务器n1请求20个流。
[0280]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0281]
可用流
[0282][0283]
每个客户端的流分配矩阵(当前分配)
[0284][0285]
每个客户端的最大流要求矩阵
[0286][0287]
每个客户端的流需要矩阵
[0288][0289]
系统处于安全状态。
[0290]
系统分配处于稳定状态。
[0291]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0292]
实验7:客户端c0从服务器n1请求30个流。
[0293]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0294]
可用流
[0295][0296]
每个客户端的流分配矩阵(当前分配)
[0297]
[0298]
每个客户端的最大流要求矩阵
[0299][0300]
每个客户端的流需要矩阵
[0301][0302]
系统处于安全状态。
[0303]
流分配处于稳定状态。
[0304]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0305]
实验8:客户端c0从服务器n1请求40个流。
[0306]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0307]
可用流
[0308][0309]
每个客户端的流分配矩阵(当前分配)
[0310][0311]
每个客户端的最大流要求矩阵
[0312]
每个客户端的流需要矩阵
[0313][0314]
系统处于安全状态。
[0315]
流分配处于稳定状态。
[0316]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0317]
实验9:客户端c0从服务器n2请求10个流。
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0318]
可用流
[0319][0320]
每个客户端的流分配矩阵(当前分配)
[0321][0322]
每个客户端的最大流要求矩阵
[0323][0324]
每个客户端的流需要矩阵
[0325][0326]
系统处于安全状态。
[0327]
流分配处于稳定状态。
[0328]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0329]
实验10:客户端c0从服务器n2请求20个流。
[0330]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0331]
可用流
[0332][0333]
每个客户端的流分配矩阵(当前分配)
[0334][0335]
每个客户端的最大流要求矩阵
[0336][0337]
每个客户端的流需要矩阵
[0338]
[0339]
系统处于安全状态。
[0340]
流分配处于稳定状态。
[0341]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0342]
实验11:客户端c0从服务器n2请求30个流。
[0343]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0344]
可用流
[0345][0346]
每个客户端的流分配矩阵(当前分配)
[0347][0348]
每个客户端的最大流要求矩阵
[0349][0350]
每个客户端的流需要矩阵
[0351][0352][0353]
系统处于安全状态。
[0354]
流分配处于稳定状态。
[0355]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0356]
实验12:客户端c0从服务器n2请求40个流。
[0357]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0358]
可用流
[0359][0360]
每个客户端的流分配矩阵(当前分配)
[0361][0362]
每个客户端的最大流要求矩阵
[0363][0364]
每个客户端的流需要矩阵
[0365][0366]
系统处于安全状态。
[0367]
流分配处于稳定状态。
[0368]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0369]
实验13:客户端c0从服务器n3请求10个流。
[0370]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0371]
可用流
[0372][0373][0374]
每个客户端的流分配矩阵(当前分配)
[0375][0376]
每个客户端的最大流要求矩阵
[0377][0378]
每个客户端的流需要矩阵
[0379][0380]
系统处于安全状态。
[0381]
流分配处于稳定状态。
[0382]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0383]
实验14:客户端c0从服务器n3请求20个流。
[0384]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0385]
可用流
[0386][0387]
每个客户端的流分配矩阵(当前分配)
[0388][0389]
每个客户端的最大流要求矩阵
[0390][0391]
每个客户端的流需要矩阵
[0392][0393]
系统处于安全状态。
[0394]
流分配处于稳定状态。
[0395]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0396]
实验15:客户端c0从服务器n3请求30个流。
[0397]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0398]
可用流
[0399][0400]
每个客户端的流分配矩阵(当前分配)
[0401][0402]
每个客户端的最大流要求矩阵
[0403][0404]
每个客户端的流需要矩阵
[0405]
[0406]
系统处于安全状态。
[0407]
流分配处于稳定状态。
[0408]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0409]
实验16:客户端c0从服务器n3请求40个流。
[0410]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0411]
可用流
[0412][0413]
每个客户端的流分配矩阵(当前分配)
[0414][0415]
每个客户端的最大流要求矩阵
[0416][0417]
每个客户端的流需要矩阵
[0418][0419]
系统处于安全状态。
[0420]
流分配处于稳定状态。
[0421]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0422]
实验17:客户端c1从服务器n0请求10个流。
[0423]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0424]
可用流
[0425][0426]
每个客户端的流分配矩阵(当前分配)
[0427][0428]
每个客户端的最大流要求矩阵
[0429]
[0430][0431]
每个客户端的流需要矩阵
[0432][0433]
系统处于安全状态。
[0434]
流分配处于稳定状态。
[0435]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0436]
实验18:客户端c1从服务器n0请求20个流。
[0437]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0438]
可用流
[0439][0440]
每个客户端的流分配矩阵(当前分配)
[0441][0442]
每个客户端的最大流要求矩阵
[0443][0444]
每个客户端的流需要矩阵
[0445][0446]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
[0447]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0448]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0449]
系统未处于安全状态。
[0450]
在许可负借用之后,重新计算流分配状态....
[0451]
可用流
[0452]
[0453]
每个客户端的流分配矩阵(当前分配)
[0454][0455]
每个客户端的最大流要求矩阵
[0456][0457]
每个客户端的流需要矩阵
[0458][0459]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
[0460]
系统处于安全状态。
[0461]
流分配处于稳定状态。
[0462]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0463]
实验19:客户端c1从服务器n0请求30个流。
[0464]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0465]
可用流
[0466][0467]
每个客户端的流分配矩阵(当前分配)
[0468][0469]
每个客户端的最大流要求矩阵
[0470][0471]
每个客户端的流需要矩阵
[0472][0473]
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
[0474]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0475]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0476]
系统未处于安全状态。
[0477]
在许可负借用之后,重新计算流分配状态....
[0478]
可用流
[0479][0480]
每个客户端的流分配矩阵(当前分配)
[0481][0482]
每个客户端的最大流要求矩阵
[0483][0484]
每个客户端的流需要矩阵
[0485][0486]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
[0487]
系统处于安全状态。
[0488]
流分配处于稳定状态。
[0489]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0490]
实验20:客户端c1从服务器n0请求40个流。
[0491]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0492]
可用流
[0493][0494]
每个客户端的流分配矩阵(当前分配)
[0495][0496]
每个客户端的最大流要求矩阵
[0497][0498]
每个客户端的流需要矩阵
[0499][0500]
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
[0501]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0502]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0503]
系统未处于安全状态。
[0504]
在许可负借用之后,重新计算流分配状态....
[0505]
可用流
[0506][0507]
每个客户端的流分配矩阵(当前分配)
[0508][0509]
每个客户端的最大流要求矩阵
[0510][0511]
每个客户端的流需要矩阵
[0512][0513]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
[0514]
系统处于安全状态。
[0515]
流分配处于稳定状态。
[0516]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0517]
实验21:客户端c1从服务器n1请求10个流。
[0518]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0519]
可用流
[0520][0521]
每个客户端的流分配矩阵(当前分配)
[0522][0523]
每个客户端的最大流要求矩阵
[0524][0525]
每个客户端的流需要矩阵
[0526][0527]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0528]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0529]
通过从服务器=1向客户端=2许可负借用=(10)来进行自身安全检查
[0530]
系统未处于安全状态。
[0531]
在许可负借用之后,重新计算流分配状态....
[0532]
可用流
[0533][0534]
每个客户端的流分配矩阵(当前分配)
[0535][0536]
每个客户端的最大流要求矩阵
[0537][0538]
每个客户端的流需要矩阵
[0539]
[0540]
系统处于安全状态。
[0541]
流分配处于稳定状态。
[0542]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0543]
实验22:客户端c1从服务器n1请求20个流。
[0544]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0545]
可用流
[0546][0547]
每个客户端的流分配矩阵(当前分配)
[0548][0549]
每个客户端的最大流要求矩阵
[0550][0551]
每个客户端的流需要矩阵
[0552][0553]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0554]
系统处于安全状态。
[0555]
流分配处于稳定状态。
[0556]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0557]
实验23:客户端c1从服务器n1请求30个流。
[0558]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0559]
可用流
[0560][0561]
每个客户端的流分配矩阵(当前分配)
[0562][0563]
每个客户端的最大流要求矩阵
[0564][0565]
每个客户端的流需要矩阵
[0566][0567]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0568]
系统处于安全状态。
[0569]
流分配处于稳定状态。
[0570]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0571]
实验24:客户端c1从服务器n1请求40个流。
[0572]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0573]
可用流
[0574][0575]
每个客户端的流分配矩阵(当前分配)
[0576][0577]
每个客户端的最大流要求矩阵
[0578][0579]
每个客户端的流需要矩阵
[0580][0581]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0582]
系统处于安全状态。
[0583]
流分配处于稳定状态。
[0584]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0585]
实验25:客户端c1从服务器n2请求10个流。
[0586]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0587]
可用流
[0588][0589][0590]
每个客户端的流分配矩阵(当前分配)
[0591][0592]
每个客户端的最大流要求矩阵
[0593][0594]
每个客户端的流需要矩阵
[0595][0596]
系统处于安全状态。
[0597]
流分配处于稳定状态。
[0598]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0599]
实验26:客户端c1从服务器n2请求20个流。
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0600]
可用流
[0601][0602]
每个客户端的流分配矩阵(当前分配)
[0603][0604]
每个客户端的最大流要求矩阵
[0605][0606]
每个客户端的流需要矩阵
[0607][0608]
系统处于安全状态。
[0609]
流分配处于稳定状态。
[0610]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0611]
实验27:客户端c1从服务器n2请求30个流。
[0612]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0613]
可用流
[0614][0615]
每个客户端的流分配矩阵(当前分配)
[0616][0617]
每个客户端的最大流要求矩阵
[0618][0619]
每个客户端的流需要矩阵
[0620][0621]
系统处于安全状态。
[0622]
流分配处于稳定状态。
[0623]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0624]
实验28:客户端c1从服务器n2请求40个流。
[0625]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0626]
可用流
[0627][0628]
每个客户端的流分配矩阵(当前分配)
[0629]
[0630]
每个客户端的最大流要求矩阵
[0631][0632]
每个客户端的流需要矩阵
[0633][0634]
系统处于安全状态。
[0635]
流分配处于稳定状态。
[0636]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0637]
实验29:客户端c1从服务器n3请求10个流。
[0638]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0639]
可用流
[0640][0641]
每个客户端的流分配矩阵(当前分配)
[0642][0643]
每个客户端的最大流要求矩阵
[0644][0645][0646]
每个客户端的流需要矩阵
[0647][0648]
系统处于安全状态。
[0649]
流分配处于稳定状态。
[0650]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0651]
实验30:客户端c1从服务器n3请求20个流。
[0652]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0653]
可用流
[0654][0655]
每个客户端的流分配矩阵(当前分配)
[0656][0657]
每个客户端的最大流要求矩阵
[0658][0659]
每个客户端的流需要矩阵
[0660][0661]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[0662]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0663]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0664]
系统未处于安全状态。
[0665]
在许可负借用之后,重新计算流分配状态....
[0666]
可用流
[0667][0668]
每个客户端的流分配矩阵(当前分配)
[0669][0670]
每个客户端的最大流要求矩阵
[0671][0672]
每个客户端的流需要矩阵
[0673]
[0674]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[0675]
系统处于安全状态。
[0676]
流分配处于稳定状态。
[0677]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0678]
实验31:客户端c1从服务器n3请求30个流。
[0679]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0680]
可用流
[0681][0682]
每个客户端的流分配矩阵(当前分配)
[0683][0684]
每个客户端的最大流要求矩阵
[0685][0686]
每个客户端的流需要矩阵
[0687][0688]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[0689]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0690]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0691]
系统未处于安全状态。
[0692]
在许可负借用之后,重新计算流分配状态....
[0693]
可用流
[0694][0695]
每个客户端的流分配矩阵(当前分配)
[0696][0697]
每个客户端的最大流要求矩阵
[0698][0699]
每个客户端的流需要矩阵
[0700][0701]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[0702]
系统处于安全状态。
[0703]
流分配处于稳定状态。
[0704]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0705]
实验32:客户端c1从服务器n3请求40个流。
[0706]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0707]
可用流
[0708][0709]
每个客户端的流分配矩阵(当前分配)
[0710][0711]
每个客户端的最大流要求矩阵
[0712][0713]
每个客户端的流需要矩阵
[0714][0715]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[0716]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0717]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0718]
系统未处于安全状态。
[0719]
在许可负借用之后,重新计算流分配状态....
[0720]
可用流
[0721][0722]
每个客户端的流分配矩阵(当前分配)
[0723][0724]
每个客户端的最大流要求矩阵
[0725][0726]
每个客户端的流需要矩阵
[0727][0728]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[0729]
系统处于安全状态。
[0730]
流分配处于稳定状态。
[0731]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0732]
实验33:客户端c2从服务器n0请求10个流。
[0733]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0734]
可用流
[0735][0736]
每个客户端的流分配矩阵(当前分配)
[0737][0738]
每个客户端的最大流要求矩阵
[0739][0740]
每个客户端的流需要矩阵
[0741][0742]
系统处于安全状态。
[0743]
流分配处于稳定状态。
[0744]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0745]
实验34:客户端c2从服务器n0请求20个流。
[0746]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0747]
可用流
[0748][0749]
每个客户端的流分配矩阵(当前分配)
[0750][0751]
每个客户端的最大流要求矩阵
[0752][0753]
每个客户端的流需要矩阵
[0754][0755]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
[0756]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0757]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0758]
系统未处于安全状态。
[0759]
在许可负借用之后,重新计算流分配状态....
[0760]
可用流
[0761][0762]
每个客户端的流分配矩阵(当前分配)
[0763]
[0764]
每个客户端的最大流要求矩阵
[0765][0766]
每个客户端的流需要矩阵
[0767][0768]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
[0769]
系统处于安全状态。
[0770]
流分配处于稳定状态。
[0771]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0772]
实验35:客户端c2从服务器n0请求30个流。
[0773]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0774]
可用流
[0775][0776]
每个客户端的流分配矩阵(当前分配)
[0777][0778]
每个客户端的最大流要求矩阵
[0779][0780]
每个客户端的流需要矩阵
[0781][0782]
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
[0783]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0784]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0785]
系统未处于安全状态。
[0786]
在许可负借用之后,重新计算流分配状态....
[0787]
可用流
[0788][0789]
每个客户端的流分配矩阵(当前分配)
[0790][0791]
每个客户端的最大流要求矩阵
[0792][0793]
每个客户端的流需要矩阵
[0794][0795]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查
[0796]
系统处于安全状态。
[0797]
流分配处于稳定状态。
[0798]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0799]
实验36:客户端c2从服务器n0请求40个流。
[0800]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0801]
可用流
[0802][0803]
每个客户端的流分配矩阵(当前分配)
[0804][0805][0806]
每个客户端的最大流要求矩阵
[0807][0808]
每个客户端的流需要矩阵
[0809][0810]
通过从服务器=0向客户端=0许可负借用=(20)来进行自身安全检查
[0811]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[0812]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0813]
系统未处于安全状态。
[0814]
在许可负借用之后,重新计算流分配状态....
[0815]
可用流
[0816][0817]
每个客户端的流分配矩阵(当前分配)
[0818][0819]
每个客户端的最大流要求矩阵
[0820][0821]
每个客户端的流需要矩阵
[0822][0823]
通过从服务器=0向客户端=0许可负借用=(10)来进行自身安全检查系统处于安全状态。
[0824]
流分配处于稳定状态。
[0825]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0826]
实验37:客户端c2从服务器n1请求10个流。
[0827]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0828]
可用流
[0829][0830]
每个客户端的流分配矩阵(当前分配)
[0831][0832]
每个客户端的最大流要求矩阵
[0833][0834]
每个客户端的流需要矩阵
[0835][0836]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0837]
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
[0838]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0839]
系统未处于安全状态。
[0840]
在许可负借用之后,重新计算流分配状态....
[0841]
可用流
[0842][0843]
每个客户端的流分配矩阵(当前分配)
[0844][0845][0846]
每个客户端的最大流要求矩阵
[0847][0848]
每个客户端的流需要矩阵
[0849][0850]
系统处于安全状态。
[0851]
流分配处于稳定状态。
[0852]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0853]
实验38:客户端c2从服务器n1请求20个流。
[0854]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0855]
可用流
[0856][0857]
每个客户端的流分配矩阵(当前分配)
[0858][0859]
每个客户端的最大流要求矩阵
[0860][0861]
每个客户端的流需要矩阵
[0862][0863]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0864]
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
[0865]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0866]
系统未处于安全状态。
[0867]
在许可负借用之后,重新计算流分配状态....
[0868]
可用流
[0869][0870]
每个客户端的流分配矩阵(当前分配)
[0871][0872]
每个客户端的最大流要求矩阵
[0873][0874]
每个客户端的流需要矩阵
[0875][0876]
系统处于安全状态。
[0877]
流分配处于稳定状态。
[0878]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0879]
实验39:客户端c2从服务器n1请求30个流。
[0880]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0881]
可用流
[0882][0883]
每个客户端的流分配矩阵(当前分配)
[0884][0885][0886]
每个客户端的最大流要求矩阵
[0887][0888]
每个客户端的流需要矩阵
[0889][0890]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0891]
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
[0892]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0893]
系统未处于安全状态。
[0894]
在许可负借用之后,重新计算流分配状态....
[0895]
可用流
[0896][0897]
每个客户端的流分配矩阵(当前分配)
[0898][0899]
每个客户端的最大流要求矩阵
[0900][0901]
每个客户端的流需要矩阵
[0902][0903]
系统处于安全状态。
[0904]
流分配处于稳定状态。
[0905]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0906]
实验40:客户端c2从服务器n1请求40个流。
[0907]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0908]
可用流
[0909][0910]
每个客户端的流分配矩阵(当前分配)
[0911][0912]
每个客户端的最大流要求矩阵
[0913][0914]
每个客户端的流需要矩阵
[0915][0916]
通过从服务器=1向客户端=0许可负借用=(10)来进行自身安全检查
[0917]
通过从服务器=1向客户端=1许可负借用=(20)来进行自身安全检查
[0918]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[0919]
系统未处于安全状态。
[0920]
在许可负借用之后,重新计算流分配状态....
[0921]
可用流
[0922][0923]
每个客户端的流分配矩阵(当前分配)
[0924][0925]
每个客户端的最大流要求矩阵
[0926][0927]
每个客户端的流需要矩阵
[0928][0929]
系统处于安全状态。
[0930]
流分配处于稳定状态。
[0931]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0932]
实验41:客户端c2从服务器n2请求10个流。
[0933]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0934]
可用流
[0935][0936]
每个客户端的流分配矩阵(当前分配)
[0937][0938]
每个客户端的最大流要求矩阵
[0939][0940]
每个客户端的流需要矩阵
[0941][0942]
系统处于安全状态。
[0943]
流分配处于稳定状态。
[0944]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0945]
实验42:客户端c2从服务器n2请求20个流。
[0946]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0947]
可用流
[0948][0949]
每个客户端的流分配矩阵(当前分配)
[0950][0951]
每个客户端的最大流要求矩阵
[0952]
每个客户端的流需要矩阵
[0953][0954]
系统处于安全状态。
[0955]
流分配处于稳定状态。
[0956]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0957]
实验43:客户端c2从服务器n2请求30个流。
[0958]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0959]
可用流
[0960][0961]
每个客户端的流分配矩阵(当前分配)
[0962]
[0963]
每个客户端的最大流要求矩阵
[0964][0965]
每个客户端的流需要矩阵
[0966][0967]
系统处于安全状态。
[0968]
流分配处于稳定状态。
[0969]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0970]
实验44:客户端c2从服务器n2请求40个流。
[0971]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0972]
可用流
[0973][0974]
每个客户端的流分配矩阵(当前分配)
[0975][0976]
每个客户端的最大流要求矩阵
[0977][0978]
每个客户端的流需要矩阵
[0979][0980][0981]
系统处于安全状态。
[0982]
流分配处于稳定状态。
[0983]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0984]
实验45:客户端c2从服务器n3请求10个流。
[0985]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0986]
可用流
[0987][0988]
每个客户端的流分配矩阵(当前分配)
[0989][0990]
每个客户端的最大流要求矩阵
[0991][0992]
每个客户端的流需要矩阵
[0993][0994]
系统处于安全状态。
[0995]
流分配处于稳定状态。
[0996]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0997]
实验46:客户端c2从服务器n3请求20个流。
[0998]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[0999]
可用流
[1000][1001][1002]
每个客户端的流分配矩阵(当前分配)
[1003][1004]
每个客户端的最大流要求矩阵
[1005][1006]
每个客户端的流需要矩阵
[1007][1008]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[1009]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[1010]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[1011]
系统未处于安全状态。
[1012]
在许可负借用之后,重新计算流分配状态....
[1013]
可用流
[1014][1015]
每个客户端的流分配矩阵(当前分配)
[1016][1017]
每个客户端的最大流要求矩阵
[1018][1019]
每个客户端的流需要矩阵
[1020][1021][1022]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[1023]
系统处于安全状态。
[1024]
流分配处于稳定状态。
[1025]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[1026]
实验47:客户端c2从服务器n3请求30个流。
[1027]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[1028]
可用流
[1029][1030]
每个客户端的流分配矩阵(当前分配)
[1031][1032]
每个客户端的最大流要求矩阵
[1033][1034]
每个客户端的流需要矩阵
[1035][1036]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[1037]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[1038]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[1039]
系统未处于安全状态。
[1040]
在许可负借用之后,重新计算流分配状态....
[1041]
可用流
[1042][1043]
每个客户端的流分配矩阵(当前分配)
[1044][1045]
每个客户端的最大流要求矩阵
[1046][1047]
每个客户端的流需要矩阵
[1048][1049]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[1050]
系统处于安全状态。
[1051]
流分配处于稳定状态。
[1052]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[1053]
实验48:客户端c2从服务器n3请求40个流。
[1054]
‑‑‑‑‑‑‑‑‑‑‑‑‑‑
[1055]
可用流
[1056][1057]
每个客户端的流分配矩阵(当前分配)
[1058][1059]
每个客户端的最大流要求矩阵
[1060][1061]
每个客户端的流需要矩阵
[1062][1063]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[1064]
通过从服务器=1向客户端=1许可负借用=(10)来进行自身安全检查
[1065]
通过从服务器=2向客户端=2许可负借用=(30)来进行自身安全检查
[1066]
系统未处于安全状态。
[1067]
在许可负借用之后,重新计算流分配状态....
[1068]
可用流
[1069][1070]
每个客户端的流分配矩阵(当前分配)
[1071][1072]
每个客户端的最大流要求矩阵
[1073][1074]
每个客户端的流需要矩阵
[1075][1076]
通过从服务器=3向客户端=0许可负借用=(10)来进行自身安全检查
[1077]
系统处于安全状态。
[1078]
流分配处于稳定状态。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1