一种基于人工蜂群算法的虚拟机放置方法
文献发布时间:2023-06-19 11:54:11
技术领域
本发明涉及云计算技术领域,具体涉及一种基于人工蜂群算法的虚拟机放置方法。
背景技术
2018年底,我国拥有的数据中心机架数量大幅上升,各类规模的数据中心机架约226.2万架,2020年全年,我国全社会发电量的2.7%用于数据中心,由于数据中心的投产数量还在稳步增加,数据中心的用电量还会进一步增加。数据中心包含的所有物理机能耗占比数据中心硬件设备总能耗的80%,就单个物理机而言,处于开机状态而无负载或负载极低的物理机功耗能够达到物理机峰值能耗的60~70%,数据中心的物理机能耗能够通过关闭低载和空闲物理机得到改善。除此之外,大量的资源碎片也是造成数据中心能效较低的重要原因,资源碎片产生的重要原因是虚拟机请求资源类型与物理机资源类型匹配度低,体现在虚拟机放置后物理机内部资源的不平衡,在虚拟机放置过程中,减少物理机内部资源的不平衡能够减少资源碎片数量,从而提升资源使用效率,减少能耗浪费。
很多文献研究了如何通过虚拟机放置方法提升数据中心资源使用效率,但存在以下不足:未将减少物理机的资源碎片作为优化目标,难以提升物理机的资源使用效率,造成能耗浪费。近年来中小型数据中心数量不断增长,迫切需要一种针对数据中心云平台资源碎片优化的虚拟机放置方法,以减少资源碎片,提升数据中心资源使用效率并降低能耗。
发明内容
本发明提供一种基于人工蜂群算法的虚拟机放置方法,其能够减少物理机资源碎片,提升数据中心资源使用效率,降低数据中心能耗。
为解决上述问题,本发明是通过以下技术方案实现的:
一种基于人工蜂群算法的虚拟机放置方法,包括步骤如下:
步骤1、当云平台接收到虚拟机放置请求后,先收集云平台中所有物理机的剩余资源信息,再将物理机的剩余资源满足虚拟机放置请求中至少一个待放置虚拟机的请求资源的物理机作为筛选出的物理机,后将筛选出的物理机划分为活动物理机和空闲物理机;其中物理机的剩余资源包括剩余CPU资源信息和剩余RAM资源信息,待放置虚拟机的请求资源包括请求CPU资源信息和请求RAM资源信息;
步骤2、将所有虚拟机放置请求中所有待放置虚拟机和步骤1筛选出的所有物理机传入人工蜂群算法,先设定人工蜂群算法的参数,再在蜜源列表中随机生成预设数量的蜜源,其中每个蜜源对应虚拟机放置请求中所有虚拟机的一个放置方案,后将当前蜜源列表中目标函数值最大的蜜源作为当前最佳蜜源;
步骤3、首先,雇佣蜂以预设的蜜蜂角色转变概率转变为跟随蜂或侦查蜂;接着,未做角色转变的雇佣蜂在其当前依附蜜源附近以贪婪策略搜索新的蜜源:当新的蜜源的目标函数值大于当前最佳蜜源的目标函数值时,则先将雇佣蜂当前依附蜜源的被丢弃次数加1,再让雇佣蜂依附到新的蜜源上,更新雇佣蜂当前依附蜜源,后将新的蜜源加入到蜜源列表中;否则,放弃该新的蜜源;最后,将当前蜜源列表中目标函数值最大的蜜源作为当前最佳蜜源;
步骤4、首先,雇佣蜂分享蜜源信息给跟随蜂;接着,每个跟随蜂先根据密源的被选择概率以轮盘赌算法选择蜜源进行跟随,其中密源的被选择概率越大,跟随蜂概率越大;最后,跟随蜂再以预设的蜜蜂角色转变概率转变为雇佣蜂;
步骤5、首先,每个侦察蜂先以贪婪策略搜索新的密源:当新的蜜源的目标函数值大于当前最佳蜜源的目标函数值时,则将新的蜜源加入到蜜源列表中;否则,放弃该新的蜜源;接着,将当前蜜源列表中目标函数值最大的蜜源作为当前最佳蜜源;最后,侦察蜂再以预设的蜜蜂角色转变概率转变为雇佣蜂;
步骤6、遍历当前蜜源列表中的每个蜜源,并分别判断每个蜜源是否达到设定的最大的丢弃次数:若该蜜源达到最大的丢弃次数,则将该密源从当前蜜源列表中删除,并将蜜源上所依附的雇佣蜂以预设的蜜蜂角色转变概率转变为跟随蜂或侦查蜂;
步骤7、判断当前迭代次数是否达到设定的最大的迭代次数:若达到最大迭代次数,则将种群当前最佳蜜源作为最终的虚拟机放置请求的虚拟机放置方案输出;否则,当前迭代次数加1,并返回步骤3。
上述步骤1中,对于虚拟机放置请求中任意一个待放置虚拟机,当前物理机的剩余CPU资源大于等于该待放置虚拟机的请求CPU资源,且当前物理机的剩余RAM资源大于等于该待放置虚拟机的请求RAM资源时,则当前物理机为筛选出的物理机。
上述步骤1中,将筛选出的物理机划分为活动物理机和空闲物理机,当物理机的剩余CPU资源与该物理机自身的CPU资源上限相同,且剩余RAM资源与该物理机自身的RAM资源上限相同时,此时,该物理机为空闲物理机;否则,该物理机为活动物理机。
上述步骤2中,设定的人工蜂群算法的参数包括:最大迭代次数,雇佣蜂、跟随蜂和侦察蜂和蜜源的数量,蜜蜂角色转变概率、以及蜜源的最大丢弃次数。
上述蜜源的目标函数值f为:
式中,y
上述步骤3中,雇佣蜂在探索新的蜜源时,蜜源各个维度的更新概率由各个维度物理机的资源平衡度决定,即该维度物理机的资源平衡度越高,蜜源在该维度的更新概率越大。
上述物理机的资源平衡度
式中,
上述步骤4中,密源的被选择概率prob为:
式中,fit表示密源的适应度,
在步骤2、步骤3和步骤5还进一步包括:判断每个蜜源是否为不可行的虚拟机放置方案,一旦该蜜源为不可行的虚拟机放置方案,则淘汰该蜜源,重新生成蜜源;其中蜜源为不可行的虚拟机放置方案是指至少一个物理机上所有虚拟机的请求资源总和超过该物理机的自身的资源上限,或者至少一个虚拟机放置在超过一台物理机上。
与现有技术相比,本发明有效减少了云平台中物理机的资源碎片,减少了因资源碎片而无法放置虚拟机的物理机数量,提升了资源使用效率,降低了数据中心能耗。
附图说明
图1为一种基于人工蜂群算法的虚拟机放置方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例,对本发明进一步详细说明。
一种基于人工蜂群算法的虚拟机放置方法,如图1所示,包括步骤如下:
步骤1、当云平台接收到虚拟机放置请求后,先收集云平台中所有物理机的剩余资源信息,再将物理机的剩余资源满足虚拟机放置请求中至少一个待放置虚拟机的请求资源的物理机作为筛选出的物理机,后将筛选出的物理机划分为活动物理机和空闲物理机。
物理机的剩余资源包括剩余CPU资源信息和剩余RAM资源信息,待放置虚拟机的请求资源包括请求CPU资源信息和请求RAM资源信息。遍历虚拟机放置请求的所有待放置虚拟机,对于虚拟机放置请求中任意一个待放置虚拟机,对于虚拟机放置请求中任意一个待放置虚拟机,当前物理机的剩余CPU资源大于等于该待放置虚拟机的请求CPU资源,且当前物理机的剩余RAM资源大于等于该待放置虚拟机的请求RAM资源时,则当前物理机为筛选出的物理机。
当物理机的剩余CPU资源与该物理机自身的CPU资源上限相同,且剩余RAM资源与该物理机自身的RAM资源上限相同时,此时,该物理机之前未放置任何虚拟机,为空闲物理机;否则,该物理机上之前已放置有至少一个虚拟机,为活动物理机。后续在运行人工蜂群算法时,先在活动物理机列表中寻找活动物理机来放置虚拟机,若找不到,再在空闲物理机列表中寻找空闲物理机来放置虚拟机。
步骤2、将所有虚拟机放置请求中所有待放置虚拟机和步骤1筛选出的所有物理机传入人工蜂群算法,先设定人工蜂群算法的参数,再在蜜源列表中随机生成预设数量的蜜源,其中每个蜜源对应虚拟机放置请求中所有虚拟机的一个放置方案,后将当前蜜源列表中目标函数值最大的蜜源作为当前最佳蜜源。
设定人工蜂群算法的参数包括:最大迭代次数,雇佣蜂、跟随蜂、侦察蜂和蜜源的数量,蜜蜂角色转变概率(表1)、以及蜜源的最大丢弃次数。
表1蜜蜂角色转变概率
假设有n个虚拟机需要放置在m个物理机上,人工蜂群算法的蜜源(虚拟机放置方案)的结构如以下公式所示:
其中,X
根据以下公式随机生成初始的蜜源:
随机生成蜜源后,需要先判断每个蜜源是否为不可行的虚拟机放置方案,一旦该蜜源为不可行的虚拟机放置方案,则淘汰该蜜源,重新生成新的蜜源。其中蜜源为不可行的虚拟机放置方案是指至少一个物理机上所有虚拟机的请求资源总和超过该物理机的自身的资源上限,或者至少一个虚拟机放置在超过一台物理机上。
蜜源的目标函数值f为:
式中,y
步骤3、首先,雇佣蜂以预设的蜜蜂角色转变概率转变为跟随蜂或侦查蜂;接着,未做角色转变的雇佣蜂在其当前依附蜜源附近以贪婪策略搜索新的蜜源:当新的蜜源的目标函数值大于当前最佳蜜源的目标函数值时,则先将雇佣蜂当前依附蜜源的被丢弃次数加1,再让雇佣蜂依附到新的蜜源上,更新雇佣蜂当前依附蜜源,后将新的蜜源加入到蜜源列表中;否则,放弃该新的蜜源;最后,将当前蜜源列表中目标函数值最大的蜜源作为当前最佳蜜源。
雇佣蜂在探索新的蜜源时,蜜源各个维度的更新概率由各个维度物理机的资源平衡度决定,即该维度物理机的资源平衡度越高,蜜源在该维度的更新概率越大。
密源中当前维度表示的物理机的资源平衡度
其中,
雇佣蜂搜索新的蜜源后,需要先判断每个蜜源是否为不可行的虚拟机放置方案,一旦该蜜源为不可行的虚拟机放置方案,则淘汰该蜜源,重新生成新的蜜源。其中蜜源为不可行的虚拟机放置方案是指至少一个物理机上所有虚拟机的请求资源总和超过该物理机的自身的资源上限,或者至少一个虚拟机放置在超过一台物理机上。
步骤4、首先,雇佣蜂分享蜜源信息给跟随蜂;接着,每个跟随蜂先根据蜜源的密源的被选择概率以轮盘赌算法选择蜜源进行跟随,其中蜜源的密源的被选择概率越大,跟随蜂概率越大;最后,跟随蜂再以预设的蜜蜂角色转变概率转变为雇佣蜂。
蜜源的密源的被选择概率prob为:
式中,fit表示密源的适应度,
步骤5、首先,每个侦察蜂先以贪婪策略搜索新的密源:当新的蜜源的目标函数值大于当前最佳蜜源的目标函数值时,则将新的蜜源加入到蜜源列表中;否则,放弃该新的蜜源;接着,将当前蜜源列表中目标函数值最大的蜜源作为当前最佳蜜源;最后,侦察蜂再以预设的蜜蜂角色转变概率转变为雇佣蜂。
侦察蜂搜索新的密源后,需要先判断每个蜜源是否为不可行的虚拟机放置方案,一旦该蜜源为不可行的虚拟机放置方案,则淘汰该蜜源,重新生成新的蜜源。其中蜜源为不可行的虚拟机放置方案是指至少一个物理机上所有虚拟机的请求资源总和超过该物理机的自身的资源上限,或者至少一个虚拟机放置在超过一台物理机上。
步骤6、遍历当前蜜源列表中的每个蜜源,并分别判断每个蜜源是否达到设定的最大的丢弃次数:若该蜜源达到最大的丢弃次数,则将该密源从当前蜜源列表中删除,并将蜜源上所依附的雇佣蜂以预设的蜜蜂角色转变概率转变为跟随蜂或侦查蜂;
步骤7、判断当前迭代次数是否达到设定的最大的迭代次数:若达到最大迭代次数,则将种群当前最佳蜜源作为最终的虚拟机放置请求的虚拟机放置方案输出;否则,当前迭代次数加1,并返回步骤3。
本发明接收到新建虚拟机的请求后,收集云平台中所有物理机剩余资源信息,根据物理机剩余资源情况,对物理机进行分类;综合考虑CPU和内存两种资源维度,以减少资源碎片与活动物理机数量为目标,然后将连续的人工蜂群算法离散化以便于求解虚拟机放置问题;向人工蜂群算法中传入物理机和待放置虚拟机;放置过程中,雇佣蜂根据物理机资源平衡度大小更新蜜源,侦察蜂随机寻找新蜜源。本发明针对云平台的资源碎片作优化,进行虚拟机放置,减少了云平台中的资源碎片,在保证低功耗的前提下提高了云平台资源使用率。
下面使用虚拟机放置模拟平台,共设置了三个对照组实验来说明本发明的有效性,设置的对照组如下:
1)MBFD算法,参考文献《A.Beloglazov,J.Abawajy,R.Buyya,Energy-awareresource allocation heuristics for efficient management of data centers forCloud computing.Future Generation Computer Systems 28,755-768(2012).》。该算法将虚拟机放置在由于这种放置而导致云平台功耗增加最少的物理机上。
2)Openstack开源云平台原生虚拟机放置算法。该算法将虚拟机放置在剩余RAM最大的物理机上。
3)FFD算法,遍历物理机列表,将虚拟机放置在首次匹配到的满足待放置虚拟机请求资源的物理机上。
云平台物理机组成情况如表2所示,共60台异构物理机,虚拟机请求资源由公开数据集GWA-T-12Bitbrains组成。
表2物理机的4种配置
人工蜂群算法的初始化参数如表3,活动物理机数量权值取值0.5。
表3人工蜂群算法相关参数
试验结果如表4,
表4试验结果
在资源碎片方面,本文算法的CPU资源碎片数量相比FFD算法和MBFD算法有大幅减少,OpenStack原生算法的CPU资源碎片为0是因为该算法总是选择剩余RAM最大的物理机作为目标物理机,本试验场景数据中心资源充足,不易产生资源碎片,但会占用大量物理机,这种情况下,资源碎片数量不适合作为衡量该算法性能的指标,在活动物理机数量和能耗得到保证的情况下,资源碎片数量才可作为算法性能的衡量指标。本文算法的RAM资源碎片数量相比FFD算法、MBFD算法,这是因为本文算法在选择目标物理机时更偏向于放置虚拟机后资源平衡度更好的物理机。
在能耗方面,放置它同样数量虚拟机时,能耗多少与活动物理机数量相关性很强,但在物理机异构数据中心的场景下,由于不同物理机的峰值能耗可能不同,导致能耗与活动物理机数量相关性变弱,不能简单的通过活动物理机数量估算能耗。本文算法在能耗方面优于FFD算法和OpenStack原生算法,与MBFD算法相比,本文算法在虚拟机数量为50、200时能耗更低,在虚拟机数量为100时,与MBFD算法能耗一致。
在活动物理机方面,本文算法优于FFD算法,本文算法的活动物理机数量在虚拟机数量为50、200时优于MBFD算法,在虚拟机数量为100时,与MBFD算法一致。OpenStack原生算法在虚拟机数量为50、100时,其活动物理机数量都为30,这是因为试验场景中存在30台128GBRAM的物理机,这30台物理机能够满足虚拟机请求且RAM剩余资源剩余资源足够大,当虚拟机数量为200时,这30台物理机虽然能够满足虚拟机请求,但其物理机剩余RAM小于64GB,致使该算法物理机数量突然上升。
在资源使用效率方面,在放置同样数量虚拟机情况下,活动物理机数量与其资源上限决定了资源使用效率的高低,在虚拟机数量为50、200时,本文算法的平均CPU资源使用效率优于对照组算法,在虚拟机数量为100时,与MBFD算法一致。在虚拟机数量为50、100时,本文算法在平均RAM资源使用效率方面与MBFD算法一致,其他情况时优于对照组算法。OpenStack原生算法平均资源使用效率低下的原因是其选择目标物理机时优选剩余RAM最大的物理机,增加了计算资源效率时的活动物理机资源上限。
通过试验结果及分析,证明了本实施例方法能够有效的减少云平台中物理机资源碎片,提升云平台资源使用效率,降低能耗。
需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。
- 一种基于人工蜂群算法的虚拟机放置方法
- 一种基于混合正弦余弦粒子群优化算法的云平台低资源损耗虚拟机放置方法