摘 要:针对现存任务调度算法优先级选取过于单一、冗余任务处理较晚的问题,提出一种基于加权优先级的任务调度算法-WPTS算法。该算法综合考虑任务3个属性的加权值以决定任务被处理的先后次序,从而克服了任务选取时的单一性问题。在将任务分配到处理器的过程中,保证任务优先调度到完成时间最早的处理器上。同时,引入冗余任务处理过程,及时消除冗余任务,达到对处理器空闲时间段进行有效回收、减少处理器调度长度的效果。性能对比实验表明,WPTS算法较CPFD算法、HCPFD算法和HDEFT算法能取得更好的性能。
0 引 言
异构多核处理器以其芯片面积利用率高、处理器功耗低、应用程序的并行化程度高等诸多优势成为处理器体系结构发展的一个重要方向,同时它的出现给计算机学科发展带来了新的挑战。研究发现多核处理器任务调度的优劣对处理器的执行时间、任务调度长度、处理器的功耗等诸多性能产生直接影响。因此,多核处理器的任务调度作为影响操作系统性能的重要因素成为近年来系统结构方向的热点研究问题之一。当前对异构多核处理器上任务调度的研究很少考虑任务优先级的选取对调度结果的影响以及使用复制技术的任务调度算法会产生冗余任务的问题。
本文深入分析了CPFD、HCPFD和HDEFT这3种最具有代表性的任务调度算法,并在总结目前任务调度算法存在的缺点基础上,根据异构多核处理器系统结构的特点,设计了基于加权优先级的任务调度算法(weighted prioritytask scheduling,WPTS),算法以3个参数构成的加权值作为任务的优先级,将任务排序构成任务调度列表,然后依次将任务映射到处理器上,并在映射过程中对任务进行优化处理,最后通过预先设定的性能评价参数对算法进行实验验证。本研究能有效改善原有任务调度算法的不足,提升了多核处理器在实际应用中的性能,对异构多核处理器上静态任务调度技术的发展具有重大理论和现实意义。
1 WPTS算法设计
1.1 3种现有高效算法的分析
目前基于异构多核处理器取得较好调度性能的算法有CPFD算法、HCPFD算法和HDEFT算法。CPFD算法使用任务节点到入口节点的最长路径b-level作为任务调度的优先级,将任务调度到具有最早完成时间的处理器上,其时间复杂度是O (v4),v是DAG图中任务节点的数目。
HCPFD算法以关键任务和任务的最晚开始时间划分任务的优先级,将任务分配到使其完成时间最早的处理器节点上,在任务到处理器的映射阶段优先考虑使用处理器上的空闲时间段来处理任务,其时间复杂度为O (pv2),p是任务调度中处理器的总个数。HDEFT算法在任务分配阶段采用sumu (vi)作为任务优先级,在任务到处理器的映射阶段使用任务插入和复制技术,其时间复杂度为O (pv2)。
CPFD算法和HCPFD算法的调度性能不够理想,原因在于算法只选择唯一任务属性作为任务的优先级,没有考虑任务间的约束关系和通信开销等影响调度性能的重要因素。HDEFT算法时间复杂度不高,但没有对使用任务复制技术后存在的冗余任务进行处理,冗余任务延长了总的任务调度完成时间,浪费了处理器资源。
本文在总结并分析上述算法不足的基础上,设计出WPTS算法,并给出任务调度实验以验证新算法的正确性和有效性。
1.2 WPTS算法执行过程
WPTS算法的执行分为两个阶段:任务优先级计算和任务到处理器的映射。其中第一阶段包括任务合并、任务分层和任务权值计算3个过程,第二阶段包括任务分配到处理器和任务调度结果优化两个过程,如图1所示。
1.3 WPTS算法实现原理
1.3.1 任务优先级计算阶段
(1)任务优先级计算阶段的设计思想任务合并是将任务中较独立、任务间通信开销较大的任务进行合并优化。对DAG图进行深度优先搜索,当任务vi只有一个直接后继节点vj、任务vj只有一个直接前驱节点vi,且c (vi,vj)≥wj,k,即任务vi、vj间的通信开销大于任务vj在所有处理器上的平均执行开销,则合并任务vi、vj,并记为vi*,vi*的计算开销为vi、vj计算开销的总和,在随后的调度中任务vi*被作为整体处理。
任务分层是为方便后续任务权值的计算。用level标记任务在DAG图中的层数,设置入口节点任务level=0,从上到下遍历任务DAG图,计算任务节点到入口节点的最大通信边数目,以此作为任务的level值。非入口节点任务vi的level值为其所有前驱节点的最大level值加1,计算公式如下所示level(vi)=Max (level(vj))+1,vj∈pred (vi)(1)在任务权值计算过程中,WPTS算法综合考虑任务各属性对任务优先级排序的影响,选择使用平均计算开销和通信开销作为任务的优先级参数。平均计算开销ACC是任务在所有处理器上计算开销的平均值,计算公式如式(2)所示。通信开销包括平均数据传输开销ADTC和平均数据接收开销ADRC,计算公式如式(3)和式(4)所示,式中x为vi直接后继节点数量,y为vi直接前驱节点数量
推荐阅读:http://blog.zhulong.com/u9964518/blogdetail4864015.html
阅读(564) | 评论(0) | 转发(0) |