本发明属于分布式计算、云计算环境下虚拟机任务调度领域,特别涉及一种基于改进蚁群算法的虚拟机任务调度方法。
背景技术:
云计算是一种利用互联网技术实现物理资源共享(计算设施、存储设备、应用程序等)的计算模式,它具有随时随地、按需分配等特点。它将底层的物理设置聚集在一起组成一个大的数据中心,从而使得用户能够获取计算能力和存储容量等。目前,虽然共享资源池能够提高资源的利用率,但如何在该环境下进行任务调度尤为重要。高效的调度策略能够缩短任务分配的时间、提高资源利用率,从而确保整个系统的服务质量(qualityofservice,qos)和服务等级协议(service-levelagreement,sla)。
云计算的任务调度主要研究如何将用户提交的任务分配给计算节点以及如何对计算节点进行动态扩展。由于云环境系统具有节点数量庞大、资源动态分配、节点失效等特点,因此调度算法必须要能够适应动态的云计算环境。libo等人提出了一种针对大规模服务器集群的虚拟机优化放置策略,他们的主要工作是对bf算法进行优化,在考虑资源利用率的情况下,综合考虑系统能耗的问题,结合系统能源效率来动态为虚拟机选择最佳的放置点(lib,lij,huaij,etal.enacloud:anenergy-savingapplicationliveplacementapproachforcloudcomputingenvironments[c].ieeeinternationalconferenceoncloudcomputing.ieeecomputersociety,2009:17-24.);nansu等人对模拟退火算法进行了改进,以此来弥补传统启发式算法收敛慢的问题,此算法定义了动态调度模型来解决虚拟机组合放置问题,但没有考虑到实际生产环境中时间也是同样重要的因素(sun,shia,chenc,etal.researchonvirtualmachineplacementinthecloudbasedonimprovedsimulatedannealingalgorithm[c].worldautomationcongress.ieee,2016:1-7.);woodt等人考虑到服务器在使用过程中的负载均衡问题,使用动态迁移的方式来避免集群中的部分服务器出现过载或者欠载的情况;在计算迁移位置时,采用贪婪算法来解决此问题,但这并未考虑到虚拟机之前存在竞争关系,该算法并不能完全消除此类关系(woodt,shenoyp,venkataramania,etal.black-boxandgray-boxstrategiesforvirtualmachinemigration[c].symposiumonnetworkedsystemsdesign&implementation.2007:229-242.)。
蚁群算法具有并行分布式、扩展性强、易实现和鲁棒性强等优点,非常适合云环境下的调度策略。蒋茜,何嘉等人针对物理机均衡负载问题提出了使用蚁群算法迭代收敛求出最优解的方法,均衡负载虽然在一定程度上可以节约资源,但仅仅一个约束条件会大大增加物理机投入量,最终造成利用率低的问题(蒋茜,何嘉.基于聚类蚁群算法的虚拟机资源分配算法研究[j].四川文理学院学报,2014,24(5):80-84.)。
综上所述,现有的蚁群算法调度策略存在优化目标过于单一导致服务器资源浪费的问题。
技术实现要素:
本发明的目的在于提供一种能够在尽可能提高资源利用率的同时保证服务器各资源的均衡率的虚拟机调度方法。
实现本发明目的的技术解决方案为:基于改进蚁群算法的虚拟机调度方法,包括以下步骤:
步骤1、初始化参数,参数包括信息素浓度、挥发系数、物理服务器与所需安放的虚拟机的集合、蚂蚁的总量及启发因子以及禁忌表;
步骤2、将每只蚂蚁随机置于某一物理服务器;
步骤3、根据蚁群算法的概率转移公式,蚂蚁从禁忌表之外的虚拟机集合中选择虚拟机,以对相应的物理服务器进行虚拟机放置,并将已选择的虚拟机加入至禁忌表中;
步骤4、判断所述物理服务器是否能继续放置虚拟机,若是,则返回步骤3;否则选取下一个物理服务器,并判断虚拟机集合中虚拟机是否全部放置,若是,执行步骤5;否则返回步骤3;
步骤5、求取每只蚂蚁对应的改进目标函数值,并选取其中的最大值所对应的虚拟机放置方案,即为虚拟机调度局部最优解,之后清空禁忌表,更新信息素浓度;
步骤6、判断当前迭代次数是否大于迭代次数阈值rmax,若大于,则结束迭代过程,执行步骤7;反之,返回步骤2进行下次迭代,直至满足迭代次数约束条件;
步骤7、输出目标函数最大值所对应的虚拟机放置方案即全局最优解。
本发明与现有技术相比,其显著优点为:在现有的调度策略上引入了资源均衡度,在寻优过程中综合考虑了cpu资源利用率以及cpu利用率和磁盘利用率的均衡度,能够尽可能提高系统的资源利用率,虽然较单一目标优化策略的效果差一点,但其不仅能提高单种物理资源的利用率,还能均衡各类物理资源,保证了每个计算节点的资源均衡度,使得每个物理服务器被合理分配利用,提高了整体利用率。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为云计算的任务调度示意图。
图2为本基于改进蚁群算法的虚拟机调度方法的流程图。
图3为本发明实施例中三种算法在50个任务请求下的比较结果示意图。
图4为本发明实施例中高任务量下三种算法的cpu利用率对比图。
图5为本发明实施例中高任务量下三种算法的资源均衡度对比图。
具体实施方式
云主机的任务调度系统的基本结构图如图1所示,由任务调度器和大量的物理资源所组成。任务调度器的作用就是为用户与大量的底层资源之前提供接口。
现有的基于蚁群算法的任务调度方法,由于大多采用的单一优化目标(cpu、磁盘、带宽),虽然单一资源的利用率得到了提升,但其他资源却被浪费了。本发明针对该问题,提出了一种改进的蚁群虚拟机调度方法,除了考虑服务器的cpu利用率之外,还将资源均衡度作为另一个优化标准,为了简化研究,本发明重点考虑cpu利用率和磁盘利用率的均衡关系,从而提高服务器的整体利用率。
结合图2,本发明基于改进蚁群算法的虚拟机调度方法,包括以下步骤:
步骤1、初始化参数,参数包括信息素浓度、挥发系数、物理服务器与所需安放的虚拟机的集合、蚂蚁的总量及启发因子以及禁忌表;
步骤2、将每只蚂蚁随机置于某一物理服务器;
步骤3、根据蚁群算法的概率转移公式,蚂蚁从禁忌表之外的虚拟机集合中选择虚拟机,以对相应的物理服务器进行虚拟机放置,并将已选择的虚拟机加入至禁忌表中;
步骤4、判断所述物理服务器是否能继续放置虚拟机,若是,则返回步骤3;否则选取下一个物理服务器,并判断虚拟机集合中虚拟机是否全部放置,若是,执行步骤5;否则返回步骤3;
步骤5、求取每只蚂蚁对应的改进目标函数值,并选取其中的最大值所对应的虚拟机放置方案,即为虚拟机调度局部最优解,之后清空禁忌表,更新信息素浓度;
步骤6、判断当前迭代次数是否大于迭代次数阈值rmax,若大于,则结束迭代过程,执行步骤7;反之,返回步骤2进行下次迭代,直至满足迭代次数约束条件;
步骤7、输出目标函数最大值所对应的虚拟机放置方案即全局最优解。
进一步地,步骤3中概率转移公式为:
式中,
其中,γij(t)的更新公式为:
式中,ρ为信息素的挥发系数,其为正数,取值范围为ρ<1;δγij(t)表示当一次循环结束之后最优解中信息素的增量,c为常数。
其中,信息素的增量δγij(t)为:
式中,fbest表示一次迭代完成后的目标函数最大值。
示例性优选地,上述α=1,β=5,ρ=0.5。
进一步地,步骤5中目标函数f为:
f=k1*ceach+k2*weach
式中,ceach和weach分别代表一次迭代即一次寻优之后的所有物理服务器cpu的平均利用率和平均资源均衡率;k1和k2分别表示目标函数中cpu平均利用率和平均资源均衡率的权重系数,k1+k2=1。
其中,平均资源均衡率weach为:
式中,uc、um分别表示物理服务器的cpu利用率和磁盘利用率,u表示所述两种资源利用率的算术平均数;当且仅当uc=um=u/2时,weach能取到最大值为1,意味着当前使用情况达到均衡;当两种资源利用率中存在一种资源利用率为0时,weach取最小值为1/2,表明当前的云计算资源使用情况失衡。
示例性优选地,
下面结合实施例对本发明作进一步详细的描述。
实施例
为了验证本发明的实用性,针对小规模任务量,基于openstack云计算平台进行测试,对传统蚁群算法、openstack内置调度算法和本发明算法的cpu利用率和资源均衡度进行了比较;针对大规模任务量,利用云仿真平台cloudsim上模拟真实的环境,进行进一步测试,比较上述三种算法的cpu利用率和资源均衡度。
测试实验中,数据中心的配置参数如下表1所示:
表1数据中心参数设置
本发明算法中,各参数的设置如下表2所示:
表2算法参数设置
当有50个虚拟机请求时,测试结果如图3所示,由图可知,传统蚁群算法产生的cpu利用率最高,因为它是以cpu利用率作为最优指标,而忽略资源均衡使用,所以导致它在本发明目标函数约束下的值最低,虽然openstack的内置算法同样也是以cpu利用率作为最优指标,但其cpu利用率不如传统蚁群算法。相比于前两种算法,本发明的方法虽然在cpu利用率方面稍微逊色,但资源均衡度有了很大的提升,这是因为资源均衡和cpu利用率等目标之间存在冲突,本发明的方法是最好的折中办法,并且它的目标函数值最大。
在云仿真平台cloudsim上模拟真实的环境进行进一步测试,分别采用100、200、300、400台虚拟机请求进行测试,仿真环境下的物理主机的cpu能力数组为{3000,4000},同时拥有8g的内存和1tb的硬盘容量。算法参数设置参照50数量虚拟机测试的配置。测试结果如图4、图5所示,可知,无论哪种算法,随着虚拟机数量的不断增加,虚拟机请求的类型也不断增加,会导致资源无法保持均衡分配,从而导致资源利用率的下降。传统蚁群算法在cpu资源利用率上一直处于领先水平,相反,由于本发明方法并不完全以cpu利用率作为最优选择,其利用率会相对来说差一些。虽然各算法的均衡度随着虚拟机数量的增加呈下降趋势,但本发明方法在资源均衡度上有很大的优势。
综合上述实验结果,本发明基于改进蚁群算法的虚拟机调度方法相比于内置算法和传统蚁群算法具有较好的性能,能够实现cpu高利用率的同时,保证资源均衡使用。