分布式系统几种典型一致性算法概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对三种典型分布式任务分配算法的分析
在分布式系统中非同居模块间的数据传递产生处理机间的通信, 这种机间通信可能使得
增加处理机数目反而会引起系统吞吐量的降低, 即产生“饱和效应”。为降低饱和效应, 人们
倾向于把模块分配到尽可能少的处理机上, 但这又导致系统负载不平衡, 从而降低了系统的吞吐量。显然, 这是任务分配中相互冲突的两个方面, 不同的任务分配算法试图用不同的策略来平衡这两个方面。
传统的分布式任务分配算法大致可分为三类: 基于图论的分配算法, 整数规划方法和试
探法。这三类算法并非互斥的, 一类算法中往往可以借鉴其它方法中的某些技术。下面, 我们
先对这三类典型算法进行分析和比较, 然后给出一种试探法的改进算法。
在讨论中, 我们假定提交的任务已分解成一组模块并使模块间的通信量尽可能小。还假
定分配模式为: 一任务被分解成m个模块T= { t1 , t2 , …, t m } , 系统中有n个可利用的处理机P= { p1 , p2 , …, p n }。任务分配的目的就是将这m个模块分配到n个处理机上, 使预期的性能目标函数值最小。
1 对三种典型算法的分析
1. 1 基于图论的分配算法
基本思想是给定矩阵C mxm表示模块间的通信开销:
C= { c i, j|1≤i≤m& 1≤j≤m& c i, j为t i 与t j 间的通信量}
给定矩阵Q mx n表示模块的执行开销:
Q= { q i, j|1≤i≤m& 1≤j≤n& q i, j为t i 在p j 上的执行开销}
将模块t1 , t2 ,…, t m作为图中结点,若两模块间有数据传递,则相应结点间有一条无向边,
1996-04-26收稿* 软件工程国家重点实验室开放基金部分资助。何炎祥, 教授, 研究方向: 分布式OS与分布信息处
理, 并行程序设计与编译系统。罗先林、吴思,研究生, 研究方向: 分布式OS与分布信息处理。
边上的权w i, j= c i, j; 处理机p1 , p2 , …, p n 也作为图中结点, 若q i, k≠∞, 则在t i 与p k 间有一条边, 定义该边上的权为w i, k=
1
n- 1Σj≠k
q i, j n-
2
n- 1
c i, k。于是, 可将该图视为一个网络, 并定
义n度割集为将网络中各个结点分割成n个不相交的子集, 使得每个子集中有且仅有一个处理机结点。可以证明, 每个切口的开销正好是执行开销和通信开销之和, 因此, 在图上执行MaxFlow /MinCut算法, 就可得到任务的最优分配方案[1 ]。在现阶段, 仅有多项式复杂度n= 2的MaxFlow /MinCut算法, 因此, 基于图论的分配算法仅限于在处理机数目小于3的环境中使用, 因而局限性较大。
Lo 在[1 ]中提出了一种改进算法。该算法分为迭代、汇总和贪心三个阶段。在第一阶段的每一轮迭代中, 依次考虑每个结点p1 , p2 , …, p n , 把p j 和p j=
P- { p j }作为两个独立的结点,
并将所有到P- { p j }的边用一个到p j
的边代替, 该边上的权为所有到P- { p j }的边上的权之
和。利用Max Flow /MinCut算法, 可得到分配给p j 的模块的一个子集。删去在此轮迭代中已分配给p j 的那些模块结点, 并定义未删除的模块t j 与处理机p k 间的权为
q i, k = q i, j+ Σt
j
为已分配给p
-
k
的某个处理机的模块
c i, j
若所有的模块结点已分配完, 或在最后一轮迭代中没有模块分配给某个处理机, 则迭代阶段结束。Lo证明了迭代的终止性及若此时模块分配完则将获得最优解。
在汇总阶段, 首先计算一个优化的n度割集的下界
L = Σt
j∈T′
min
k
( q i, k ) + min
j≠r
c( p j , p r )
其中, c( p j , p r )为任意选择的处理机间最小切口的开销, T′为所有第一阶段中没有分配的模
块的集合。然后, 检查将剩余模块指派到某个处理机上是否更合适, 若是, 则算法结束, 也得到一个最优解。否则进入贪心阶段。将相互通信开销大的模块汇集成簇, 同一簇中的模块分配
到同一个处理机上, 这样得到的结果是次最优的。
这个改进算法解决了基本算法在处理机数目上的限制。为使此算法更能反映真实情况,
Lo 还考虑了每个处理机上可利用资源的限制和同居模块间的通信开销, 并引入了冲突开销的因素。此外, Lo 提出了一种限制各处理机上模块数的方法, 其基本思想是: 若m> 2n, 则
先
进行合一, 并保证合一后的簇中模块数目不超过[B /2 ] ( B为一处理机上最大允许的模块数)。重复这种合一过程, 直至模块簇数目m′≤2n, 然后再用适当算法将m′个模块簇按最小
执行
开销分配到n个处理机上。
这个改进算法利用了试探法中对模块进行合一的思想, 并直接利用了现有的网络算法,
因此实现较简单, 但算法开销大, 因为Max Flow /MinCut算法的时间复杂度为O( a2 log2+ a /n b) , 其中a , b分别为边数和结点数。每次迭代中, 每获得分配给一个处理机的模块子集的复
杂度为O( m4 log2m) (设系统为全互连的) , 这样, 每次迭代的开销为O( nm4 log2 m) , 而最坏迭代次数为m。因此, 最坏情况下的复杂度为O( nm5 log2m)。此外, 该算法没有明确反映实时性和存储方面的限制, 没有提供保护模块优先关系的机制, 也不能衡量排队延迟对吞吐量的影响。
1. 2 整数规划方法
基本思想是仍用前面定义的Q矩阵表示执行开销, 但用V m×m表示模块间的通信开销: