云数据中心以能效为目标的虚拟机部署算法及系统

文档序号:26003872发布日期:2021-07-23 21:21阅读:87来源:国知局
本发明涉及虚拟机分配的
技术领域
:,尤其涉及云数据中心以能效为目标的虚拟机部署算法及系统。
背景技术
::随着云计算技术的逐渐成熟,越来越多的企业将应用部署到云计算平台上,因而云计算数据中心的规模越来越大。一个云计算数据中心涉及几十万台甚至几百万台规模的物理机(服务器),这些物理机的运行需要消耗大量的能量,从而导致服务提供商的运营成本增加。面对如此规模的数据中心,如何降低数据中心的能耗,成为云服务提供商面临的一个重要挑战。现有的虚拟机部署算法,为了减少数据中心服务器违约损失率,常常会把负载超过预设阈值的服务器上的虚拟机迁移到负载低于预设阈值的服务器上,这样虽然能在一定程度上减轻负载过重的服务器上的违约率,但却没有考量云计算中心的能耗问题,一旦迁移的对象为负载较重,且负载低于预设阈值的服务器上,就会导致负载较重,且负载低于预设阈值的服务器在短时间又转变为超过预设阈值的服务器,又得再次迁移虚拟机,而虚拟机的频繁迁移不但增加能耗,而且还影响整个云计算中心的稳定性,此外,一旦迁移对象为负载过轻的服务器上,且存在比负载过轻的服务器负载重,且能正常容纳负载过轻的服务器的虚拟机的服务器时,说明负载过轻的服务器的运行并非必要,那么负载过轻的服务器本身的运行就会增加能耗,将迁移对象为负载过轻的服务器也并非优选。因此,如何解决现有的虚拟机部署算法无法同时兼顾减少服务器的违约损失率和能耗已成为本领域技术人员亟待解决的技术问题。技术实现要素:本发明提供了云数据中心以能效为目标的虚拟机部署算法及系统,用于解决现有的虚拟机虚拟机部署算法无法同时兼顾减少服务器的违约损失率和能耗的技术问题。为解决上述技术问题,本发明提出的技术方案为:一种云数据中心以能效为目标的虚拟机部署算法,包括以下步骤:分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率与其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。优选的,自适应阈值包括高阈值、中阈值、正常阈值以及低阈值,其中,高阈值>中阈值>正常阈值>低阈值;分别获取各个服务器的自适应分类阈值,具体包括以下步骤:对于任意一台服务器,均执行以下步骤:对服务器连续一段时间的资源利用率进行聚类,得到k个类簇;分别计算服务器的各个类簇的mad值,构建由服务器的各个类簇的mad值组成的mad值集;计算mad值集的四分位距iqr;基于四分位距iqr,分别计算服务器的自适应分类阈值。优选的,计算mad值集的四分位距iqr,具体包括以下步骤:对mad值集中的mad值按从小至大进行排序并分成四等份,从小至大处于三个分割点位置的mad值分别为mad值集的第一四分位数q1、第二四分位数q2以及第三四分位数q3;计算第三四分位数q3与第一四分位数q1的差值,得到mad值集的四分位距iqr:iqr=q3-q1。优选的,基于服务器的四分位距iqr,分别计算服务器的自适应分类阈值,通过以下公式计算得到:th=(1-c×iqr),tm=a1(1-c×iqr),tn=a2(1-c×iqr),tl=a3(1-c×iqr),其中,th为高阈值、tm为中阈值、tn为正常阈值、tl为低阈值,a1,a2以及a3分别为经验参数,其值可以通过经验值设定,其中,1<a1<a2<a3<0,c为安全系数,根据经验设定。优选的,分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别,具体包括以下步骤:对于任意一个服务器,均执行以下步骤:将服务器的实时资源利用率ts分别与服务器的高阈值th、中阈值tm、正常阈值tn以及低阈值tl进行比较:当服务器的实时资源利用率ts≤服务器的低阈值tl时,则判断服务器负载过轻;当服务器的实时资源利用率ts>服务器的低阈值tl,且服务器的实时资源利用率ts≤服务器的正常阈值tn时,则判断服务器负载较轻;当服务器的实时资源利用率ts>服务器的正常阈值tn,且服务器的实时资源利用率ts≤服务器的中阈值tm时,则判断服务器正常负载;当服务器的实时资源利用率ts>服务器的中阈值tm,且服务器的实时资源利用率ts≤服务器的高阈值th时,则判断服务器负载中等;当服务器的实时资源利用率ts>服务器的高阈值th时,则判断服务器负载过重。优选的,资源利用率为cpu利用率,聚类采用k-means聚类算法。优选的,通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率,具体包括以下步骤:分别计算各个正常负载的服务器的能效,其中,服务器的能效由服务器的能耗以及违约损失率决定,将负载过重的服务器上的部分虚拟机依次迁移至正常负载的服务器中的、当前最高能效的服务器上,直至负载过重的服务器的实时资源利用率ts≤服务器的高阈值th;分别计算各个负载较轻的服务器的能效,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器中的、当前最高能效的服务器上,并禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去。优选的,计算服务器的能效通过以下公式实现:slad=slaa-slabpd=pa-pb其中,slad为虚拟机迁移后服务器的违约损失率与虚拟机迁移前服务器违约损失率之间的差值,slaa为虚拟机迁移后服务器的违约损失率,slab为虚拟机迁移前服务器的违约损失率;pd为虚拟机迁移后服务器的能耗与虚拟机迁移前服务器的能耗之间的差值,pa为虚拟机迁移后服务器的能耗,pb为虚拟机迁移前服务器的能耗;efd为服务器的能效。一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一算法的步骤。本发明具有以下有益效果:1、本发明中的云数据中心以能效为目标的虚拟机部署算法及系统,分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。2、在优选方案中,本技术方案根据各个服务器过去一段时间的资源利用率来确定各个服务器的动态分类,再对动态分类后的服务器进行分配,相比现有技术,这种分配方法对各种应用场景都可以应用,应用范围更广。3、在优选方案中,由于虚拟机频繁迁移会增加云计算中心的能耗,降低云计算中心的服务器的稳定性,本技术方案还通过禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去,从而避免服务器频繁的迁移,进一步提高服务器的能效。除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照附图,对本发明作进一步详细的说明。附图说明构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是云数据中心以能效为目标的虚拟机部署算法的分配流程图(图中变量m为云数据中心服务器的数量);图2是本发明中的云数据中心以能效为目标的虚拟机部署算法与其他虚拟机部署算法的性能比对图(其中,(a)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的能耗比对图,(b)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的能效比对图,(c)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的sla违约率比对图,(d)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的svth比对图,(e)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的pdcm比对图,(f)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的虚拟机迁移数比对图)。具体实施方式以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。实施例一:如图1所示,本实施例中公开了一种云数据中心以能效为目标的虚拟机部署算法,包括以下步骤:分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率与其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。此外,在本实施例中还公开一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一算法的步骤。本发明中的云数据中心以能效为目标的虚拟机部署算法及系统,分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。实施例二:在cdc云数据中心,有大量的服务器相互连接,并向云用户提供各种云服务。数据中心内的这些服务器具有不同的资源利用率(例如,cpu利用率、内存利用率和磁盘利用率)。由于服务器的cpu利用率占能耗很大比例,本技术方案通过设置四个阈值将数据中心内的服务器划分为五个类。这四个阈值分别是tl、tn、tm和th(0≤tl<tn<tm<th≤1),五类服务器分别是负载过重的服务器、负载中等的服务器、正常负载的服务器、负载较轻的服务器和负载过轻的服务器。并通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。具体的,在本实施例中,公开了一种云数据中心以能效为目标的虚拟机部署算法,包括以下步骤:s1、分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;设云数据中心的服务器集合s={s1,s2,...,si,...,sm}(l≤i≤m),其中,si为第i台服务器,i为服务器的序号,m为云数据中心服务器的总数;设云数据中心的虚拟机集合v={vm1,vm2,...,vmj,...,vmn}(1≤j≤n),其中,vmj为第j台虚拟机,j为虚拟机的序号,n为云数据中心的虚拟机的总数;其中,对于任意一台服务器si,获取服务器si的自适应分类阈值,具体包括以下步骤:设服务器si在过去一段时间段n的资源利用率(这里具体指cpu利用率)的时序集合为t={t1,t2,...,tp,...,tn}(1≤p≤n),其中,tp为服务器si在第p时刻的资源利用率,p为n时段中的第p时刻,n为时刻总数。s11、使用k-means聚类算法对服务器si在过去一段时间段n的资源利用率(这里具体指cpu利用率)的时序集合t={t1,t2,...,tp,...,tn}进行聚类,得到由k个类簇构成的类簇集合c={c1,c2,...,cq,...,ck}(1≤q≤k),0=r0<r1<r2<r3<...<rq=n,当(1≤q,e≤k),其中,cq为聚类形成的第q个类簇,q为类簇序号,k为类簇总数。s12、分别计算服务器si的类簇集合c={c1,c2,...,cq,...,ck}中各个类簇的mad值,构建由服务器的各个类簇的mad值组成的mad值集mr={mr1,mr2,...,mrq,...,mrk}(1≤q≤k);其中,对于任意一个类簇cq,其mad值由以下公式计算得到:其中,median(cq)为类簇cq的中位数,为cq类簇中的第i个对象。s13、计算mad值集mr={mr1,mr2,...,mrq,...,mrk}的四分位距iqr;对mad值集中的mad值按从小至大进行排序并分成四等份,从小至大处于三个分割点位置的mad值分别为mad值集的第一四分位数q1、第二四分位数q2以及第三四分位数q3;计算第三四分位数q3与第一四分位数q1的差值,得到mad值集的四分位距iqr:iqr=q3-q1。(2)s14、基于服务器si的四分位距iqr,分别计算服务器si的自适应分类阈值,通过以下公式计算得到:th=(1-c×iqr),(3)tm=a1(1-c×iqr),(4)tn=a2(1-c×iqr),(5)tl=a3(1-c×iqr),(6)其中,th为高阈值、tm为中阈值、tn为正常阈值、tl为低阈值,a1,a2以及a3分别为经验参数,其值可以通过经验值设定,其中,0<a1<a2<a3<1,c为安全系数,其根据经验设定,取值范围为(0.5,3),一般来说,c值越大,虚拟机被迁移的频率就越高,也就意味着能耗更少,违约损失率更高。相反,c值越小,则意味着虚拟机被迁移频率越低,就意味着能耗更大,违约损失率更低。在本实施例中,a1=0.9,a2=0.8,a3=0.5,c=1。其中,分别获取各个服务器的自适应分类阈值的源代码如下:algorithm1kmiralgorithm(k-means-mad-iqr)input:thepastcpuutilizationsett={t1,t2,...,tp,...,tn}(1≤p≤n)andkoutput:fourthresholdstl,tn,tm,andth1:fori=1tomdo2:obtainthepastcpuutilizationsett={t1,t2,...,tp,...,tn}andparameterk;3:gettheclustersc={c1,c2,...,cq,...,ck}byusingthek-meansalgorithm,thatisc=kmeans(t,k);//参数k为聚类的个数4:forj=1tokdo5:mc[j]←mad(cj);//计算各个类簇的mad值6:endfor7:calculateiqr(mc)byusingeq.(2);8:obtainthefourthresholdstl,tn,tm,andthaccordingtoeqs.(3)-(6);9:endfor10:returntl,tn,tm,andth.s2、分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻这五种;如图1所示,对于任意一个服务器si,均执行以下步骤:将服务器si的实时资源利用率ts分别与服务器的高阈值th、中阈值tm、正常阈值tn以及低阈值tl进行比较:当服务器si的实时资源利用率ts≤服务器的低阈值tl时,则判断服务器负载过轻;当服务器si的实时资源利用率ts>服务器的低阈值tl,且服务器的实时资源利用率ts≤服务器的正常阈值tn时,则判断服务器负载较轻;当服务器si的实时资源利用率ts>服务器的正常阈值tn,且服务器的实时资源利用率ts≤服务器的中阈值tm时,则判断服务器正常负载;当服务器si的实时资源利用率ts>服务器的中阈值tm,且服务器的实时资源利用率ts≤服务器的高阈值th时,则判断服务器负载中等;当服务器si的实时资源利用率ts>服务器的高阈值th时,则判断服务器负载过重。s3、将负载过重的服务器上的虚拟机迁移至正常负载的服务器,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器,并禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去。由于虚拟机的频繁迁移会增加云计算中心的能耗,降低云计算中心的服务器的稳定性,本技术方案还通过禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去,从而避免服务器频繁的迁移,进一步提高服务器的能效。分别计算各个正常负载的服务器的能效,其中,服务器的能效由服务器的能耗以及违约损失率决定,将负载过重的服务器上的部分虚拟机依次迁移至正常负载的服务器中的、当前最高能效的服务器上,直至负载过重的服务器的实时资源利用率ts≤服务器的高阈值th;其中,迁移算法的源代码如下:input:tl,tn,tm,andthoutput:migratemap1:serverlist=getserverlist();//获取服务器列表2:forservertoserverlistdo3:ts=server.getutilizationofcpu();//获取资源利用率4:if(ts≤tl)then5:vmlist=getallvmtomigrate(server);//迁移服务器上的所有服务器6:onemap=getvmplacement(vmlist);7:migratemap.add(onemap);8:elseif(ts≤th)then9:continue;10:elseif(ts>th)then11:vmlist=getvmtomigrate(server);//迁移服务器上的一部分虚拟机12:twomap=getvmplacement(vmlist);13:migratemap.add(twomap);14:endif15:endfor16:returnmigratemap.分别计算各个负载较轻的服务器的能效,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器中的、当前最高能效的服务器上。其中,计算服务器的能效通过以下公式实现:slad=slaa-slabpd=pa-pb其中,slad为虚拟机迁移后服务器的违约损失率与虚拟机迁移前服务器违约损失率之间的差值,slaa为虚拟机迁移后服务器的违约损失率,slab为虚拟机迁移前服务器的违约损失率;pd为虚拟机迁移后服务器的能耗与虚拟机迁移前服务器的能耗之间的差值,pa为虚拟机迁移后服务器的能耗,pb为虚拟机迁移前服务器的能耗;efd为服务器的能效。将负载过重的服务器上的虚拟机迁移至正常负载的服务器,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器的虚拟机部署算法,源代码如下:algorithm3afed-efinput:tl,tn,tm,andthoutput:vmsplacement1:vmlist=getvmlist();//获得虚拟机列表2:serverlistone=getlightlyloadedserverlist();3:serverlisttwo=getnormallyloadedserverlist();4:vmlist.sortbycpudecreasing();//根据虚拟机的cpu利用率对虚拟机进行降序排列5:forvmtovmlist()do6:minpower=min_value;7:allocatedserver=null;8:forservertoserverlistoneorserverlisttwodo//对候选服务器列表中的每个服务器9:if(server.issuitableforvm(vm))then10:powerserver=server.getpower();//获取服务器的能耗11:powerserveraftervm=getpower(server,vm);12:powerdiff=powerserveraftervm-powerserver;//计算虚拟机放置前后的每个候选服务器能耗差异13:sla=server.getsla();14:slaafterallocation=getsla(server,vm);15:sladiff=slaafterallocation-sla;//计算虚拟机放置前后的每个候选服务器违约损失率差异16:ef=1/(powerdiff*sladiff);//计算候选服务器的能效17:if(ef>minpower)then18:minpower=ef;19:allocatedserver=server;//选择一个具有最高能效的服务器来实现虚拟机的部署,并返回最终结果20:endif21:endif22:endfor23:allocatethevmtoserverandachieveplacement24:endfor25:returnvmsplacement实验验证:创建一个云数据中心,该云数据中心由800台服务器,在该云数据中心由hpproliantg4和hpproliantg5两种型号的服务器组成,采用不同的虚拟机部署算法以及本发明中的虚拟机部署算法对该云数据中心的虚拟机部署进行测试,并从能耗、vm迁移数、sla(即违约损失率)(sla=svth*pdcm)、svth(slaviolationtimeperactiveserver,每个服务器的sla违约率时间)、pdcm(performancedegradationcausedbyvmmigration,迁移机迁移导致的性能降低)和能效这六个评价指标评价不同虚拟机部署算法的性能,得到如图2所示的评价指标比对图,从图中可以看出,本发明中的虚拟机部署算法(即图中afed-1.0)能效最高(值越大越好),sla违约率和能耗最低(值越小越好),且虚拟机迁移数量也较低,可见本发明中的虚拟机部署算法性能最好。综上所述,本发明中的云数据中心以能效为目标的虚拟机部署算法及系统,分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。在优选方案中,本技术方案根据各个服务器过去一段时间的资源利用率来确定各个服务器的动态分类,再对动态分类后的服务器进行分配,相比现有技术,这种分配方法对各种应用场景都可以应用,应用范围更广。在优选方案中,由于虚拟机频繁迁移会增加云计算中心的能耗,降低云计算中心服务器的稳定性,本技术方案还通过禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去,从而避免服务器频繁的迁移,进一步提高服务器的能效。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1