[发明专利]一种基于关键路径任务前瞻的工作流调度方法有效
| 申请号: | 201710406234.X | 申请日: | 2017-06-02 |
| 公开(公告)号: | CN107301500B | 公开(公告)日: | 2020-09-25 |
| 发明(设计)人: | 张雅琴;孙婷;肖创柏 | 申请(专利权)人: | 北京工业大学 |
| 主分类号: | G06F16/00 | 分类号: | G06F16/00;G06Q10/06 |
| 代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 刘萍 |
| 地址: | 100124 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 关键 路径 任务 前瞻 工作流 调度 方法 | ||
1.一种基于关键路径任务前瞻的工作流调度方法,其特征在于,包括以下步骤:
步骤1,构建有向无环图DAG任务调度模型
当工作流进入调度系统时,先将工作流转换为能够被识别和处理的DAG任务调度模型,具体方法如下;
步骤1.1,DAG模型图表示为:G=(N,E);
(1)G=(N,E)中N={n1,n2...nv}是任务集,每一个n1∈N表示任务集中一个具体的任务,i指的是任务n1在DAG模型图中的编号,其中没有父节点的任务称为DAG入口任务,没有子节点的任务称为DAG出口任务;E是任务之间有向边的集合,有向边θ(i,j)∈E表示任务ni与任务nj之间的执行先后顺序和数据传递的依赖关系;任务ni是有向边的起始节点,任务nj是有向边的终止节点,i和j分别是任务ni和任务nj在DAG模型图中的编号,且ij;当任务ni执行完成,并将任务nj所需的数据传送到达后,任务nj才可能进入准备开始执行的状态,即就绪状态;
(2)每条有向边都有一个权重值,用于表示与边相连的两个任务之间传递数据所需的平均时间;通信时间花费与处理器启动通信的时间、处理器之间数据传送的速度和任务间通信数据的大小有关;将处理器启动通信的时间花费存储在一个q维度的矢量L中,其中q为处理器个数;处理器之间传送数据的速度使用一个q×q大小的矩阵B来存储;任务之间通信数据的大小使用一个v×v大小的矩阵data来存储,其中v为任务总数,那么datai,j表示任务ni和任务nj之间所需要通信的数据总和;这样通信时间花费使用一个v×v大小的矩阵A来存储,其中Ai,j定义为从任务ni传递通信数据到任务nj需要的总时间,任务ni假设在处理器pm上调度,任务nj假设在处理器pn上调度公式表示为:
其中,m和n分别表示处理器pm和处理器pn在处理器集合P={p1,p2...pq}中的编号,Lm表示处理器pm启动通信的时间,Bm,n表示处理器pm和处理器pn之间传送数据的速度,当ni和nj在同一处理器上调度时,即m=n时,处理机内部的通信时间花费忽略不计,Ai,j等于0;被定义为任务ni与任务nj之间传递数据的平均通信时间,公式表示为:
其中,表示所有处理器启动通信所需时间的平均值,表示在定义域内处理器间传输数据的平均速度;和都是计算环境中的已知参数;
(3)构建计算时间花费二维表,对DAG图中每个任务节点在处理器集中每个处理器上的执行时间进行预估,形成一个v×q大小的矩阵D,其中v表示任务节点数,q表示用于执行计算的异构分布式计算资源数;
步骤2,从出口任务开始,向上遍历DAG图,递归计算出所有任务的向上排序值;
出口任务nexit的向上排序值ranku(nexit)定义为任务nexit的平均计算时间,也就是出口任务nexit在各个处理器上的计算时间的平均值:对于DAG图中的其他任务,向上排序值定义为从这个任务到出口任务的多条路径中,平均计算时间和平均通信时间总和的最大值,其中也包括这个任务本身的计算时间的平均值;任务ni的向上排序值ranku(ni)用公式表示为:
其中,指的是任务ni在各个处理器上的平均计算时间,succ(ni)指的是任务ni的直接后继任务的集合,指的是任务ni与后继任务nj之间的平均通信时间,ranku(nj)是后继任务nj的向上排序值,max括号内求的是后继任务中向上排序值和平均通信时间总和的最大值;
步骤3,从入口任务开始,向下遍历DAG图,递归计算出所有任务的向下排序值;
入口任务nentry的向下排序值定义为零,即rankd(nentry)=0;对于DAG图中的其他任务,向下排序值定义为从入口任务到这个任务的多条路径中,平均计算时间和平均通信时间总和的最大值,其中不包括这个任务本身的平均计算时间;任务ni的向下排序值rankd(ni)用公式表示为:
其中,pred(ni)指的是任务n1的直接前驱任务的集合,rankd(nj)是前驱任务nj的向下排序值,指的是任务nj与任务ni之间的平均通信时间,指的是前驱任务nj在各个处理器上的平均计算时间,max括号内求的是前驱任务中向下排序值、平均通信时间和平均计算时间总和的最大值;
步骤4,赋予任务优先级并初始化任务队列;
DAG任务调度图中的每个任务节点的优先级大小等于该任务的向上排序值和向下排序值之和,即ranku+rankd;从公式中看,某个任务的优先级大小是从入口任务到该任务再到出口任务的多条路径中平均计算时间和通信时间总和的最大值;本方法使用动态任务队列,每次只存放当前时刻的就绪任务,就绪任务指的是可以准备开始执行的任务,也就是前驱任务都已经调度完成的任务,由于入口任务没有前驱,所以使用入口任务初始化任务队列;
步骤5,求取关键路径长度和关键路径任务集;
入口任务的优先级大小等于从DAG入口任务到DAG出口任务的多条路径中的最大完成时间,对应的这条路径就是DAG任务调度图的关键路径,最大完成时间就是关键路径的长度,在关键路径上的任务称为关键路径任务;关键路径任务的优先级大小相等且优先级最高;
步骤6,为每个任务选择处理器资源;
首先从任务队列里选出优先级最高的任务作为待调度的任务;
(1)如果是非关键路径任务;
步骤6.1,计算任务的最早完成时间;
任务的完成时间与处理器开始执行任务的时间、任务的就绪时间和任务在各个处理器上计算时间有关;
处理器准备执行任务的时间,也就是处理器最早开始工作的时间,即每个处理器上到目前为止执行的最后一个任务的完成时间,使用一个q维度的数组avail来存储,q为处理器个数;在调度最开始avail数组初始化为零,然后一旦有任务ni被调度到处理器pj上执行完成以后,而插入策略又没有找到插入位置或者插入后任务ni的完成时间没有变短,avail(pj)就变为ni的完成时间,否则数值不变;
任务的就绪时间,也就是任务需要的所有数据传送到达处理器的时间,使用一个q维度的数组readyT来存储,q为处理器个数;在每次调度时readyT数组都初始化为零,然后任务ni在选择处理器pj时,readyT(pj)等于任务ni所需要的全部数据到达处理器pj的最长时间,也就是ni的直接前驱任务的实际完成时间加上前驱任务到ni的通信费用的最大值;公示表示为:
其中,pred(ni)表示任务ni的直接前驱任务的集合,AFT(nm)表示直接前驱任务nm的实际完成时间,表示直接前驱任务nm与任务ni的平均通信时间;入口任务由于没有前驱任务,所以在各个处理器上的就绪时间均等于0;
任务最早开始执行的时间EST(Earliest execution Start Time),用一个q维度的数组来存储,q为处理器个数;任务ni在处理器pj上的最早开始执行时间EST(pj)定义为处理器pj的最早开始工作时间avail(pj)和任务ni在处理器pj上的就绪时间readyT(pj)中的最大值,公式表示为:
EST(pj)=max{avail(pj),readyT(pj)} (6)
其中,对于单一入口任务的DAG图来说,入口任务在每个处理器上的最早开始执行时间等于0;在多入口任务图中,入口任务在处理器pj上的最早开始执行时为:EST(pj)=avail(pj),avail(pj)为处理器pj的最早开始工作时间;
任务最早执行完成时间EFT(Earliest execution Finish Time),在任务最早开始执行的时间EST的基础上考虑任务的计算时间,前提是任务的所有直接前驱任务都已经被调度并执行完成;任务ni的最早执行完成时间EFT(ni)定义为任务ni在各个处理器上的最早开始执行时间与任务ni在对应处理器上的计算时间的和的最小值,公式表示为:
其中,P={p1,p2...pq}为处理器集合,EST(pj)为任务ni在处理器pj上的最早开始执行时间,Di,j为任务ni在处理器pj上的计算时间;
步骤6.2,做出资源分配决策;
将任务分配到能够使任务最早执行完成的处理器上;
(2)如果是关键路径任务;
步骤6.3,计算任务在各个处理器上的完成时间;
任务ni在处理器pj上的执行完成时间FT(ni,pj)定义为任务ni在处理器pj上的最早开始执行时间与任务ni在处理器pj上的计算时间的和,公式表示为:
FT(ni,pj)=EST(pj)+Di,j (8)
其中,EST(pj)表示任务ni在处理器pj上的最早开始时间,Di,j表示任务ni在处理器pj上的计算时间,并采用基于插入的策略查找任务ni在各个处理器上的可插入的空闲位置;
步骤6.4,计算子任务的最早完成时间;
先假设任务ni在处理器集合中的某个处理器pj上执行,那么任务ni实际完成时间就是FT(ni,pj),如果找到可插入的空闲位置,则改变处理器pj上的最早开始执行时间avail(pj),否则不变,然后任务ni的子任务按照优先级大小非递增的顺序,按照公式(7)依次求得所有子任务的最早完成时间;再假设任务ni在另一个处理器上执行,重复上述过程,直至遍历整个处理器集合;
步骤6.5,做出最优资源分配决策;
假设任务在某个处理器上执行,计算出这个任务的所有子任务的最早完成时间,并记录任务在这个处理器上执行时所有子任务的最早完成时间的最大值,然后遍历整个处理器集合,比较在各个处理器上得到的子任务的最早完成时间的最大值,最大值中数值最小的说明任务在这个最小值对应的处理器上执行时,任务的子任务的整体完成时间最短,那么就将任务分配到这个处理器上执行;
(3)计算调度长度;
任务ni按照选择规则被调度到处理器pj上执行后,任务ni在处理器pj上的最早开始时间和最早完成时间分别等于任务ni的实际开始时间AST(ni)和实际完成时间AFT(ni);当DAG任务图中所有任务都调度完成后,出口任务nexit的实际完成时间AFT(nexit)等于调度长度,也称为完成时间;对于多个出口任务的DAG图,调度长度makespan定义为出口任务中实际完成时间的最大值:
makespan=max{AFT(nexit)} (9)
步骤7,更新任务队列;
删除刚刚调度完成的任务,然后查找该任务的子任务是否成为就绪状态,即子任务的前驱任务是否都已经调度执行完成,最后将新的就绪任务存入任务队列;返回执行步骤6,直到任务队列中没有待调度的任务。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710406234.X/1.html,转载请声明来源钻瓜专利网。





