发明名称 一种基于可靠性驱动的云资源容错调度方法
摘要 一种基于可靠性驱动的云资源容错调度方法,包括以下步骤:1)初始化;2)计算DAG中的每个任务i的bl(i)和初始化tl(i)=0;3)将开始任务插入α中;4)开始调度,按如下步骤进行操作,直至所有的任务都调度完成,具体包含如下步骤:4.1)调度时的初始化;4.2)在每个处理机Pj上,寻找任务i的合适处理机;4.3)如果任务i没有可行的处理机,则调度失败;4.4)将处理机分配给任务i;4.5)将任务i的空闲后续放入到α中;4.6)更新U;5)调度结束,调度成功。本发明通过有效的容错调度提高了系统的服务质量。
申请公布号 CN102799474A 申请公布日期 2012.11.28
申请号 CN201210211602.2 申请日期 2012.06.21
申请人 浙江工商大学 发明人 张芮;琚春华;陈沛帅
分类号 G06F9/46(2006.01)I;G06F9/50(2006.01)I 主分类号 G06F9/46(2006.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;王利强
主权项 1.一种基于可靠性驱动的云资源容错调度方法,其特征在于:包括以下步骤:1)初始化,包含如下过程:1.1)将系统支持的最大处理机失败的数量赋值给ε;1.2)确定系统的处理机集P={P<sub>1</sub>,P<sub>2</sub>,…,P<sub>m</sub>},任务的计算时间用ε:V×P→R来模拟,ε(i,P<sub>j</sub>),1≤j≤m表示系统中每个任务在每个处理机上的执行时间;任务间的通信时间用W(i,j)=v(i,j)×d(P<sub>k</sub>,P<sub>b</sub>)来表示,其中,任务i映射到处理机P<sub>k</sub>上,任务j映射到处理机P<sub>b</sub>上,d(P<sub>k</sub>,P<sub>b</sub>)表示发送单位长度数据所需的时间;如果任务部署到同一个处理机上,则通信时间为零;1.3)初始化调度任务集合<img file="FDA00001795912900011.GIF" wi="148" he="43" />未调度任务集合U=V,设S是调度任务集合,U是未调度任务集合,一旦一个任务i∈S调度到处理机P<sub>j</sub>上,则会得到它的开始时<img file="FDA00001795912900012.GIF" wi="97" he="58" />和完成时间<img file="FDA00001795912900013.GIF" wi="133" he="59" />利用无回路有向图DAG来模拟任务模型中的任务以及它们之间的关系,用T=(V,E)表示,其中V是一个节点集合对应所有非周期、非抢占性的实时任务;E是一个边集合对应所有任务之间的优先关系以及任务之间的通信;对于一个任务i,S<sub>dp</sub>(i)表示任务i的直接前续集合,S<sub>ds</sub>(i)表示任务i的直接后续集合;v(i,j)表示任务i发送给任务j的数据量;1.4)初始化空闲任务优先列表<img file="FDA00001795912900014.GIF" wi="151" he="42" />该表利用平衡搜索树去执行任务;2)计算无回路有向图DAG中的每个任务i的bl(i)和初始化每个开始任务i的tl(i)=0;tl(i)表示动态高位水平,bl(i)表示静态低位水平;其中tl(i)依赖于映射过程中己经部署的任务,bl(i)根据DAG的拓扑结构将保持不变;其中,bl(i)的求解步骤如下:2.1):对于<img file="FDA00001795912900015.GIF" wi="159" he="36" />如果任务i的后续集合为空,即<img file="FDA00001795912900016.GIF" wi="226" he="48" />则<img file="FDA00001795912900017.GIF" wi="250" he="61" />其中<img file="FDA00001795912900018.GIF" wi="88" he="62" />是任务的平均执行时间,即<img file="FDA00001795912900019.GIF" wi="457" he="106" />否则转到2.2);2.2):<maths num="0001"><![CDATA[<math><mrow><mi>bl</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>max</mi><mrow><mi>j</mi><mo>&Element;</mo><msub><mi>S</mi><mi>ds</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></msub><mo>{</mo><mover><mrow><mi>&epsiv;</mi><mrow><mo>(</mo><mi>I</mi><mo>)</mo></mrow></mrow><mo>&OverBar;</mo></mover><mo>+</mo><mover><mrow><mi>W</mi><mrow><mo>(</mo><mi>I</mi><mo>,</mo><mi>J</mi><mo>)</mo></mrow></mrow><mo>&OverBar;</mo></mover><mo>+</mo><mi>bl</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>}</mo><mo>,</mo></mrow></math>]]></maths><img file="FDA00001795912900022.GIF" wi="157" he="61" />表示任务间的平均通信时间,求解公式为:<img file="FDA00001795912900023.GIF" wi="420" he="61" />其中<img file="FDA00001795912900024.GIF" wi="36" he="48" />表示系统中处理机间发送单位长度数据的平均延迟;3)将开始任务插入α中;4)开始调度,任务的调度过程如下4.1)调度时的初始化,包含以下过程:4.1.1):选择优先权最高的任务,并将H(α)赋值给i;一个任务的优先权由tl(i)+bl(i)来决定,H(α)返回有序队列α中的第一个任务,即是带有最高优先权的任务;4.1.2):初始化可靠性r为0;4.1.3):最早完成时间初始化<img file="FDA00001795912900025.GIF" wi="189" he="57" />4.2)对于每个处理机P<sub>j</sub>按如下步骤Step1~Step3进行操作,从第一个处理开始处理,直至将所有的处理机都处理完毕;4.2.1):计算最早完成时间<img file="FDA00001795912900026.GIF" wi="140" he="57" />具体的求解公式如下:<maths num="0002"><![CDATA[<math><mrow><msubsup><mi>t</mi><mi>i</mi><mrow><mi>P</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo><mi>ef</mi></mrow></msubsup><mo>=</mo><mi>&epsiv;</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>+</mo><mi>max</mi><mo>{</mo><msub><mi>max</mi><mrow><mi>u</mi><mo>&Element;</mo><msub><mi>S</mi><mi>dp</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></msub><mo>{</mo><msubsup><mi>min</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>&epsiv;</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>{</mo><msubsup><mi>t</mi><msup><mi>u</mi><mi>k</mi></msup><mrow><mi>P</mi><mrow><mo>(</mo><msup><mi>u</mi><mi>k</mi></msup><mo>)</mo></mrow><mo>,</mo><mi>f</mi></mrow></msubsup><mo>+</mo><mi>W</mi><mrow><mo>(</mo><mi>u</mi><mo>,</mo><mi>i</mi><mo>)</mo></mrow><mo>}</mo><mo>}</mo><mo>,</mo><msub><mi>max</mi><mrow><mi>i</mi><mo>&Element;</mo><mi>S</mi></mrow></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>ij</mi></msub><mo>&times;</mo><msubsup><mi>t</mi><mi>i</mi><mrow><mi>P</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo><mi>f</mi></mrow></msubsup><mo>)</mo></mrow><mo>}</mo></mrow></math>]]></maths>其中,<img file="FDA00001795912900028.GIF" wi="120" he="72" />为任务u的第k个副本u<sup>k</sup>在所在的服务器的处理完成时间;x<sub>ij</sub>=1表示任务i映射到处理机P<sub>j</sub>上,否则为x<sub>ij</sub>=0;4.2.2):如果任务i能够在处理机P<sub>(ε+1)</sub>上达到最早完成时间,且在t<sub>r-a</sub>(i)之前完成,则确定此时系统的可靠度r<sub>j</sub>。否则,返回结束此次循环,对下一个处理器进行操作,返回4.2.1);t<sub>r-a</sub>(i)的作用是限制任务的响应时间,其求解公式为:<maths num="0003"><![CDATA[<math><mrow><msub><mi>t</mi><mrow><mi>r</mi><mo>-</mo><mi>a</mi></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>min</mi><mrow><mi>j</mi><mo>&Element;</mo><msub><mi>S</mi><mi>ds</mi></msub></mrow></msub><mo>{</mo><msub><mi>max</mi><mrow><mi>q</mi><mo>&Element;</mo><msub><mi>S</mi><mrow><mi>dp</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msub></mrow></msub><mo>{</mo><msubsup><mi>t</mi><mi>q</mi><mrow><mi>P</mi><mrow><mo>(</mo><mi>q</mi><mo>)</mo></mrow><mo>,</mo><mi>d</mi></mrow></msubsup><mo>+</mo><mi>W</mi><mrow><mo>(</mo><mi>q</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>}</mo><mo>}</mo><mo>;</mo></mrow></math>]]></maths>对于容错调度每个任务有一个调度矩阵<img file="FDA000017959129000210.GIF" wi="318" he="57" />假设系统中一个任务I的ε+1个副本分派到m个处理机上,当任务的副本i分派到处理机P<sub>j</sub>时,<img file="FDA000017959129000211.GIF" wi="150" he="54" />否则<img file="FDA000017959129000212.GIF" wi="159" he="54" />其中i=1,2,…,(ε+1),j=1,2,…,m;系统的可靠度的求解公式为:r<sub>j</sub>=exp(-PR),其中<img file="FDA000017959129000213.GIF" wi="394" he="73" />为副本i在处理机P<sub>j</sub>的可靠性,是由事先给定的处理机失败比率λ<sub>j</sub>和i在处理机P<sub>j</sub>上的执行时间c<sub>ij</sub>共同决定的;4.2.3):如果满足以下两个条件之一:①r<sub>j</sub>&gt;r;②r<sub>j</sub>=r且<img file="FDA00001795912900031.GIF" wi="298" he="58" />则调度任务i到这ε+1个处理机上,然后返回Step1去处理下一个处理机,直至将所有的处理机都处理完毕;4.3)如果对于任务i没有可行的处理机,则返回调度失败;4.4)将处理机分配给任务i;当任务i在处理机上的可靠性最大时;则将任务i放入S中,并同时更新任务i的后续的优先权;4.5)将任务i的空闲后续放入到α中;4.6)更新U,U=U(i);4.7)当未调度任务集合U不为空时,即<img file="FDA00001795912900032.GIF" wi="156" he="39" />则按步骤4.1)到4.6)进行循环操作,直至U为空。
地址 310018 浙江省杭州市下沙高教园区学正街18号