《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于改进蚂蚁算法的网格任务调度策略研究

基于改进蚂蚁算法的网格任务调度策略研究

2008-03-21
作者:梁 鸿,田世峰

  摘 要: 介绍了蚂蚁算法" title="蚂蚁算法">蚂蚁算法,并进一步将这种新型的生物优化思想进行扩展,应用于网格系统" title="网格系统">网格系统中的任务调度" title="任务调度">任务调度问题。通过增加负载平衡因子,将用户提交的任务合理地映射到相对空闲的资源上去,经仿真平台实验,可有效地实现任务的合理调度和网格系统的负载平衡。
  关键词: 网格计算 任务调度 蚂蚁算法 NP 负载平衡因子

 

  网格任务调度是网格计算的关键问题之一。大量任务请求使用网格资源时,必须对它们进行合理调度才能达到资源的优化利用。然而现有的一些任务调度方法[1]如Backfilling[2],FCFS(First Come First Service)等并不能很好地适应网格资源的特点,如调度问题的NP完全性、资源的异构性以及资源分配决策的并行性和分布性等。
  鉴于构造性方法质量较差且缺少柔性,蚂蚁算法就成了解决此类问题的首选。本文提出一种基于改进蚂蚁算法[3]的网格任务调度方法,它充分考虑了资源的链路带宽、CPU计算处理能力" title="处理能力">处理能力、磁盘容量以及资源的单位定价等因素,并把这些因素综合起来确定资源的信息素" title="信息素">信息素浓度。在保证资源利用率的同时,能显著改善网格系统的负载均衡问题。
1 蚂蚁算法介绍
  蚂蚁算法[4,5]由意大利学者M.Dorigo等人首先提出,是一种源于大自然生物世界的新的仿生类算法。作为通用型随机优化方法,它吸收了昆虫王国中蚂蚁的行为特征,通过其内在的搜索机制,在一系列困难的组合优化问题求解中取得了成效。由于在模拟仿真中使用的是人工蚂蚁概念,因此有时亦被称为蚂蚁系统[6]
1.1 蚂蚁算法的原理
  用于优化领域的人工蚂蚁算法,其基本原理吸收了生物界中蚂蚁群体行为的某些显著特征:(1)察觉小范围内状况并判断出是否有食物或其他同类的信息素轨迹。(2)释放自己的信息素。(3)所遗留的信息素数量会随时间而逐步减少。
1.2 蚂蚁算法的特点
  蚂蚁算法是一种智能优化仿生算法,其显著特点为:(1)其原理是一种正反馈机制或称增强型学习系统,它通过信息素的不断更新达到最终收敛于最优路径上。(2)它是一种分布式的优化方法,不仅适合目前的串行计算机,而且适合未来的并行计算机。(3)它是一种全局优化的方法,不仅可用于求解单目标优化问题,而且可用于求解多目标优化问题。(4)它是一种启发式算法,计算复杂度为O(NC*m*n2),其中NC是迭代次数,m是蚂蚁数目,n是目的节点数目。
2 网格任务调度仿真系统
  为了集中研究任务调度问题,排除其他复杂因素的干扰,设计了一个比较通用的结构简单的但功能齐全的任务调度仿真系统。
2.1 仿真系统结构
  仿真系统结构如图1所示。


2.2 仿真系统工作流程
  (1)当用户提交一个任务请求(包含任务的任务量、通信量、任务提交时间、时间限度等参数)时,触发任务接收器,任务接收器就将新任务加入到任务队列排队。任务队列按照优先级排序,可以根据不同用户的不同需要(用户等级、任务紧迫度等)对进入队列的任务进行排序。
  (2)仿真环境中的计时器每隔一定时间触发任务调度器,任务调度器就会从任务队列中取出待处理的任务,并从资源监视器中获得当前系统资源使用情况列表。
  (3)根据待处理任务及系统资源调用任务分配策略器,产生一个最优化的任务分配表。
  (4)根据最优化任务分配表,调用任务分配器,执行任务分配表中的任务。如果任务顺利完成,则将任务占有的资源释放并加入到资源列表中;如果任务失败,则释放该任务占有的系统资源,并将失败的任务插入到任务队列中,以待下次调度。
  (5)当不能从任务队列中获得任务时,表明所有任务都已经完成,将根据运行中得到的数据产生需要的统计结果。
3 蚂蚁算法在网格任务调度中的应用
3.1 改进后的蚂蚁算法思想
  当一个新资源s加入网格系统时,需要提供其链路带宽r(Mbps)、CPU个数m和处理能力p(MIPS)、磁盘存储容量f(MB)以及此资源的单位定价k等基本参数,资源发现器(类似于GLOBUS中的GIIS)据此可以初始化该资源的各种信息素(每种信息素对应于一个基本参数)。在初始化各种信息素之前,先定义资源中各基本参数的阈值:
  rmax=r0  mmax=m0  pmax=p0  fmax=f0  kmax=k0
  并规定:如果资源的各参数值超过阈值,则统一以阈值进行后面的计算。
  然后初始化各种信息素:
  Tsr(0)=r/r0*100%       链路带宽r的信息素
  Tsm(0)=(m*p)/(m0*p0)*100%  CPU计算能力的信息素
  Tsf(0)=f/f0*100%       磁盘存储容量f的信息素
  Tsk(0)=k/k0*100%       资源的单位定价k的信息素    (1)
  则资源s的初始化总信息素为:
  Ts(0)=a*Tsr(0)+b*Tsm(0)+c*Tsf(0)+d*Tsk(0)          (2)
  其中,a+b+c+d=1,a,b,c,d分别表示链路带宽信息素、CPU计算能力信息素、磁盘存储容量信息素以及资源的单位定价信息素在该资源总信息素中所占的比重。
  每当有新资源加入网格系统,或某资源退出或者掉线,或任务成功或失败返回时,资源信息素都会随之改变:Tsnew=g*Tsold+△Ts,△Ts是信息素改变量,g表示信息素持久性(取0.6),1-g表示信息素的挥发性[7]
  当任务从资源s成功返回时,△Ts=Ce*K,Ce是奖励参数,取0.6,表示增加成功经验;当任务从资源s失败返回时,△Ts=Cp*K,Cp是惩罚因子,取-1.2.
资源信息素改变时,任务分配概率随之改变:
  
  式中,Ts(t)为时间t时资源s的信息素浓度,ηs表示资源s的固有属性,ηs=Ts(0);α表示信息素的重要性,β表示资源固有属性的重要性。
3.2 改进后的蚂蚁算法流程
  基于上面的公式和思想,设计了下面的用于网格系统中任务调度的算法,该算法分为9个步骤:
  (1)利用公式(1)初始化所有资源的各种信息素,利用公式(2)初始化各资源的总信息素。
  (2)调度器接收当前从用户发送来的实验数据,即随机任务。
  (3)对当前实验的每个任务,依据其分配给每个资源的概率判断使用哪个资源。具体做法是以下(4)~(6)。
  (4)利用公式:
  
  算出该任务分配给每个资源的概率。其中,ηs表示资源s的固有属性,ηs=Ts(0);Ts(t)是资源s的信息素浓度;α表示信息素的重要性,取α=0.5;β表示资源固有属性的重要性;u代表系统中所有可用资源。
  (5)依据概率将任务分配给一个资源。
  (6)利用公式:
  Tsr(t′)=Ts(t)*p-0.0005L1
  Tsr(t)=Tsr(t′)
  Tsm(t′)=Ts(t)*p-0.0005L2
  Tsm(t)=Tsm(t′)
  对链路带宽信息素、CPU计算能力信息素进行更新。而磁盘容量信息素及资源单位定价信息素暂时不变。其中,L1,L2为任务的通信量及计算量。然后根据公式:Ts(t)=a*Tsr(t)+b*Tsm(t)+c*Tsf(t)+d*Tsk(t)将该资源的信息素进行更新。
  (7)将当前实验的所有任务都分配给资源后,则等待任务的返回。如果任务成功返回,则利用以下公式:
  Tsr(t+1)=p*Tsr(t)+0.6*L1
  Tsm(t+1)=p*Tsm(t)+0.6*L2
  Tsf(t+1)=p*Tsf(t)+0.6*L3
  Tsk(t+1)=Tsk(t)
  Ts(t+1)=a*Tsr(t+1)+b*Tsm(t+1)+c*Tsf(t+1)+d*Tsk(t+1)
  对该资源的信息素进行更新。其中,L3为任务在计算过程中占用磁盘容量最大时的值。
  如果任务失败返回,则利用公式:
  Tsr(t+1)=p*Tsr(t)-1.2*L1
  Tsm(t+1)=p*Tsm(t)-1.2*L2
  Tsf(t+1)=p*Tsf(t)-1.2*L3
  Tsk(t+1)=Tsk(t)
  Ts(t+1)=a*Tsr(t+1)+b*Tsm(t+1)+c*Tsf(t+1)+d*Tsk(t+1)
  对该资源的信息素进行更新。
  (8)重复(3)~(7),直到当前实验的所有任务都成功返回为止。
  (9)重复(2)~(8),直到所有用户实验都被处理完为止。
3.3 负载平衡因子的添加
  当某个资源负载很重时,很容易成为网格计算的瓶颈,影响所有任务的及时完成。改进后的蚂蚁算法,在很大程度上实现了负载平衡。为了取得更好的负载平衡效果,要不断地探测资源的负载及其任务完成情况,以便对以后新任务的分配产生积极的影响。同时通过把各资源的负载完成率的差值控制在一个较小的门限之内以保证负载均衡。本文在蚂蚁算法中引入一个负载平衡因子λ。
  λ=u/Ts(0)
  式中,u为资源上尚未完成的任务量,而Ts(0)基本上可以代表某资源的处理能力。
  每次任务完成时的信息素改变量为△Ts+c/λ(c为调节因子),即如果对未完成任务中所需处理时间长的节点,将资源信息素降低一些,则所需处理时间短的节点信息素就增加一些。这样就能保证任务负载率尽快逼近同一个值,在以后分配任务的过程中,系统的负载均衡能力就会得到进一步提高。
4 实验结果
  在仿真平台下,用8个资源和800个任务进行模拟实验。资源情况如表1所示,任务计算量为2000M~10000M,数据通信量在10M~100M。

 


  图2给出了各资源的初始总信息素(其中,取a=0.2,b=0.5,c=0.2,d=0.1)。初始总信息素基本上代表了这个资源的处理能力。
  如图3所示,所有资源的任务量与资源处理能力之比基本相同。任务最终完成情况与资源的处理能力成正比,性能好的资源分到了更多的任务。同时由此图与资源列表可以分析出,任务的调度受处理器个数、处理器计算能力影响较大。而当磁盘容量满足任务存储需求时,其差别可以忽略不计。


  针对网络资源变化比较频繁的这种复杂的网格环境,提出了应用改进的蚂蚁算法进行任务调度的策略,通过综合考虑资源的各方面参数来确定其信息素浓度,有利于更恰当地选择资源,提高了资源的利用率;同时通过引入负载平衡因子,提高了整个仿真系统的负载均衡能力。下一步的研究重点将集中在提高蚂蚁算法运行速度,加快算法的收敛时间这个问题上。有一种思想就是把蚂蚁算法和一些经典的人工智能算法结合起来,例如将蚂蚁算法的应用与神经网络的训练结合。
参考文献
1 Lichen Zhang.Scheduling algorithm for real-time application in grid environment[C].In:System,Man and Cybernetics,2002 IEEE International Conference on,2002
2 Barry G Lawsom,Evgenia Smirni.Multiple-queue backfilling scheduling with priorities and reservations for parallel systems[J].ACM SIGMENTRICS Performance Evaluation Review,2002;29(4):40~47
3 Daniel Merkel,Martin Middendorf,Hartmut Schmeck.Ant colony optimization for resource-constrained project scheduling[J].IEEE Transaction on Evolutionary Computation,2002;6(4)
4 Marco Dorigo,Gianni Di Caro.Ant algorithms for discrete optimization[J].Artificial Life,1999;5(3):137~172
5 Marco Dorigo,Luca Maria Gambardella.Ant colony system:a cooperative learning approach to the traveling salesman problem[J].IEEE Transaction on Evolutionary Computation,1997;1(4):53~56
6 Colorini A,Marco Dorigo,Maniezzo V.An investigation of some prosperities of an ant algorithm[J].in:Proceedings of the Parallel Problem Solving from nature Conference,1992:509~520
7 Macro Dorigo,Eric Bonabeau,Guy Theraulaz.Ant algorithms and stigmergy[J].Future Generation Computer Systems,2000;16(8):851~871

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。