引言
是如何把分布在不同地理位置上的计算资源、存储资源、通信资源、软件资源、信息资源和知识资源等通过Internet整合成一台巨大的超级计算机,实现各种资源的全面共享,是网格任务调度的主要工作任务。资源管理是网格技术的关键。
用户通过向网格系统提交计算任务,以此来共享网格资源,网格调度程序再把这些任务分配给合适的资源。高效的调度策略或算法可以充分利用网格系统的处理能力,达到提高应用程序性能的面对。在目前的网格调度算法研究中,主要目标是提高吞吐率和系统的使用率,实现经济系统和用户的约束条件,使得在整个系统中网格应用任务的完成时间达到化。
遗传算法(IGA)是建立一个调度的集合并从其中找出优化的调度,将这种特性遗传给下一代。遗传算法通过适应度函数交叉和重组得出的调度。这是一种迭代的算法,它的优点是在不断进化的过程中吸收系统发生改变,能够适应动态变化的网格系统。
本文将改进的遗传算法(IGA)用于网格任务调度,通过IGA寻找满足完成所有任务时间短的优化方案。
1 背景描述
网格是一个集成的计算与资源环境,网格技术作为一种高性能广域分布式计算模型,已在众多研究机构的中成为热门研究话题。
在网格技术的众多问题中,网格计算中的任务调度在一般形式下是一个NP问题,没有解。在调度算法的高效性、资源的异构性以及资源分配决策的并行性和分布性等方面,传统的调度算法并不能很好地适应网格资源的特性。因此,如何对网格资源进行合理分配和管理,满足各种应用的服务需求,实现资源的优化利用,就成为该领域的研究关键。
网格任务调度根据任务间是否存在通信关系可以分为对相互间存在通信任务的任务组的调度和对相互独立的任务组的调度。在算法实现中都假定资源的信息是可获取的。
网格任务调度的实质就是在一个由m个需要调度的任务、n个可用的任务执行单元(主机或集群)、k个数据存储单元构成的网格环境下,把m个任务T={t1,t2,…,tm}以合理的方式调度到n台主机的过程,目的是得到尽可能短的总完成时间。把每个执行单元广义地当作一台主机来看待,把k个数据存储单元当成一个存储系统整体来看待。
m个任务在n台不同主机上的预测执行时间EET是一个m×n的矩阵。矩阵中的每一行代表某一个任务在n台机器上的不同执行时间,每一列代表在同一台机器上的m个任务的不同执行时间。
通信开销矩阵CCT描述了网格环境下,不同“任务对”在各主机之间进行数据传输的通信开销。任务必须分配到一台主机上,所需要的数据也必须从它的父任务发送过来,父任务可能有多个。个任务没有通信开销,其后的所有任务都可能有通信开销,因此CCT是一个m×m的矩阵。
m个任务在n台不同机器上的预测短完成时间MCT是一个m×n的矩阵,MCT(i,j)除了包含EET(i,j)外,还应考虑通信和等待通信的时间开销T(i,j),T(i,j)=max((CCT(i,v)+TW(i,k)),k=1,2,…,i-1),TW(i,k)为第i个任务等待其父任务准备好数据的时间。
调度的目标是在考虑通信开销和给定代价及约束集合现状之下,任务集合总的完成时间短。
负载均衡性可以用每个调度方案中各台主机的长执行时间与短执行时间的比值来衡量,该值越小,则该调度方案中各台主机的负载均衡性越好。
2 改进遗传算法在网格任务调度中的应用
2.1 改进遗传算法
遗传算法求解问题的基本步骤为:
(1)定义适应度函数和相应的隶属度函数;
(2)确定算法的初值和初始种群;
(3)对种群进行选择、交叉、变异操作,产生新的种群;
(4)循环遗传操作,直到达到进化的代数。
适应度比例方法是目前遗传算法中基本也是常用的选择方法,即轮盘赌选择法。在该方法中,各个个体的选择概率和其适应度值成比例,适应度高的个体被选中的可能性大。
交叉运算是遗传算法区别于其他进化算法的重要特征,在遗传算法中起关键作用。两点交叉是遗传算法中比较常用的交叉方法。在相互配对的两个个体编码串中随机设置两个交叉点,然后在两个交叉点之间进行基因交换,以产生新的个体。
在群体的所有个体中随机地确定基因座,以事先设定的变异概率来对这些基因座上的基因值进行变异。当进行变异操作时,所有基因座上的基因值的变异必须是合法的,并且必须在可选择的范围内进行。
改进遗传算法的基本思想是对种群中染色体进行过滤。首先计算出种群中每一个个体所对应的适应度函数值及负载均衡度值,剔除负载均衡度值低的部分染色体,再从剩余的染色体中选出一些适应度高的个体,其数量等于剔除掉染色体的数量。使这些个体在种群中复制,以保持种群大小不变。这样,高适应度的染色体取代负载均衡度值不良的染色体,使得高适应度染色体在种群中所占比例增大,从而使选择操作中有更多的优良个体被选中,提高搜索性能。
2.2 改进遗传算法在网格任务调度中的应用
在网格任务调度模型中,设x={x1,x2,…,xm},其中m是任务数,xi是介于1~n之间的一个整数,即主机编号。因此用x来表示一种选择方案,在遗传算法中它表示一个染色体。例如由10个任务和5台主机组成的系统中,方案[2,1,5,4,2,3,5,1,4,5]表示第1个任务由第2台主机完成,第2个任务由第1台主机完成,第3个任务由第5台主机完成,依次类推。
遗传算法通过适应度函数来确定染色体的优劣,所以必须根据实际问题的需要选择适应值函数。由于调度过程中,求解的任务总完成时间makespan是一个值,故定义适应度函数为:
其中,ms为对应某一染色体编码的任务总完成时间,是makespan的缩写,msmin为总完成时间的估算值,msmax为总完成时间的估算值,msmin和msmax适当取值,使0<fit(ms)<1。总完成时间ms越小,适应度fit(ms)越大,该染色体被选中的可能性就越大。
改进遗传算法的流程如下:
(1)随机产生满足染色体定义的初始种群,种群大小为popsize;定义进化代数的初值和值,设定交叉概率、变异概率等初始参数;
(2)计算种群中每一个个体所对应的适应度函数值及负载均衡度值;
(3)将种群中负载均衡度值的部分个体剔除掉,并对适应度值高的个体复制,以补充被剔除掉的个体,保证总的染色体数为popsize不变;
(4)采用轮盘赌法进行选择操作;
(5)随机配对,按照给定的概率进行单点交叉、交叉点随机设置;
(6)对个体的每一个基因座,根据变异概率指定其变异点,对每一指定的变异点的基因值由除该基因值以外的随机产生的[1,n]之间的数值代替;
(7)寻找种群中适应度值和与之对应的完成时间;
(8)判断算法是否达到迭代次数,如未满足条件,则转步骤(2)继续搜索;否则输出全局适应值及其对应的染色体,将该任务选择方案赋给网格调度模型。
为了验证本文提出的IGA算法的有效性,用IGA算法与基本遗传算法及经典的Min-Min算法进行对比仿真研究。
Min-Min算是网格调度算法的研究基础,该算法的目的是将大量的任务指派给完成早、执行快的机器。算法的思想为:对等待分配的每一个任务,分别计算出该任务分配到n台机器上的早完成时间;从中找出具有早完成时间的任务,并将该任务分配给对应的机器;分配完成后,更新机器期望就绪时间并删除已经分配的任务。重复上面的过程,直到分配完所有的任务。
3 仿真实验及结果分析
在Matlab环境下设计一个网格任务调度系统模拟程序,该程序可以根据仿真的需要生成不同的主机处理能力、主机数量、任务数量、每个任务的预测执行时间、通信开销及其他时间开销等参数。在用改进的遗传算法寻找任务调度的方案时,种群规模为40,允许迭代次数为400。
(1)产生一个任务数为80、主机数为8的模型,将IGA、GA和Min-Min算法同时用于该模型的任务调度,图1和图2分别表示采用IGA和GA算法时每台主机的执行时间以及完成所有任务总的执行时间情况。而图3则表示采用Min-Min算法时的仿真结果。
从仿真结果可以看出,采用IGA进行任务调度时的makespan是22.5731,采用GA进行任务调度时的makespan是23.6112,而采用Min-Min算法得到的调度方案的makespan是24.1009,采用IGA算法比采用GA算法节省了4.40%的执行时间,采用IGA算法比采用Min-Min算法节省了6.34%的执行时间。图1中主机1、4、8的负载略高,总的负载均衡性较好;图2中主机3、8的负载低,主机2负载,负载均衡性不如图1;但在图3中,主机1、3、6、8负载明显高于其他主机,负载均衡性不如图1,也不如图2,这就是Min-Min算法的主要缺陷。另外,应用IGA进行调度时,负载的主机与负载的主机的负载比值为1.0851;采用GA算法时,这个数据为1.1606,而采用Min-Min算法时,这个比值则为1.2479。
(2)在主机数量不变的情况下,改变任务数量,分别应用IGA、GA和Min-Min算法寻找调度方案,表1给出了两种算法对应的makespan的仿真结果对比,结果显示IGA优于GA和Min-Min算法。
(3)在任务数量固定的情况下,主机数量从8台均匀递增至20台,分别应用IGA、GA和Min-Min算法寻找调度方案,并计算三种方案的makespan,将仿真结果列于表2中,结果显示IGA算法比GA算法和Min-Min算法得到的任务完成时间短。
4 结语
本文基于分析网格任务调度问题和基本遗传算法,提出了一种带过滤机制的改进遗传算法,并使网格任务调度模型得到优化。用Matlab进行仿真实验,结果表明文中所提算法有很好的特性,得到了更为满意的结果,可以实现网格资源之间公平有效的任务调度。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。