云数据中心以能效为目标的虚拟机部署算法及系统
文献发布时间:2023-06-19 11:57:35
技术领域
本发明涉及虚拟机分配的技术领域,尤其涉及云数据中心以能效为目标的虚拟机部署算法及系统。
背景技术
随着云计算技术的逐渐成熟,越来越多的企业将应用部署到云计算平台上,因而云计算数据中心的规模越来越大。一个云计算数据中心涉及几十万台甚至几百万台规模的物理机(服务器),这些物理机的运行需要消耗大量的能量,从而导致服务提供商的运营成本增加。面对如此规模的数据中心,如何降低数据中心的能耗,成为云服务提供商面临的一个重要挑战。
现有的虚拟机部署算法,为了减少数据中心服务器违约损失率,常常会把负载超过预设阈值的服务器上的虚拟机迁移到负载低于预设阈值的服务器上,这样虽然能在一定程度上减轻负载过重的服务器上的违约率,但却没有考量云计算中心的能耗问题,一旦迁移的对象为负载较重,且负载低于预设阈值的服务器上,就会导致负载较重,且负载低于预设阈值的服务器在短时间又转变为超过预设阈值的服务器,又得再次迁移虚拟机,而虚拟机的频繁迁移不但增加能耗,而且还影响整个云计算中心的稳定性,此外,一旦迁移对象为负载过轻的服务器上,且存在比负载过轻的服务器负载重,且能正常容纳负载过轻的服务器的虚拟机的服务器时,说明负载过轻的服务器的运行并非必要,那么负载过轻的服务器本身的运行就会增加能耗,将迁移对象为负载过轻的服务器也并非优选。
因此,如何解决现有的虚拟机部署算法无法同时兼顾减少服务器的违约损失率和能耗已成为本领域技术人员亟待解决的技术问题。
发明内容
本发明提供了云数据中心以能效为目标的虚拟机部署算法及系统,用于解决现有的虚拟机虚拟机部署算法无法同时兼顾减少服务器的违约损失率和能耗的技术问题。
为解决上述技术问题,本发明提出的技术方案为:
一种云数据中心以能效为目标的虚拟机部署算法,包括以下步骤:
分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;
分别将各个服务器的实时资源利用率与其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;
通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。
优选的,自适应阈值包括高阈值、中阈值、正常阈值以及低阈值,其中,高阈值>中阈值>正常阈值>低阈值;分别获取各个服务器的自适应分类阈值,具体包括以下步骤:
对于任意一台服务器,均执行以下步骤:
对服务器连续一段时间的资源利用率进行聚类,得到K个类簇;
分别计算服务器的各个类簇的MAD值,构建由服务器的各个类簇的MAD值组成的MAD值集;
计算MAD值集的四分位距IQR;
基于四分位距IQR,分别计算服务器的自适应分类阈值。
优选的,计算MAD值集的四分位距IQR,具体包括以下步骤:
对MAD值集中的MAD值按从小至大进行排序并分成四等份,从小至大处于三个分割点位置的MAD值分别为MAD值集的第一四分位数Q
计算第三四分位数Q
IQR=Q
优选的,基于服务器的四分位距IQR,分别计算服务器的自适应分类阈值,通过以下公式计算得到:
T
T
T
T
其中,T
优选的,分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别,具体包括以下步骤:
对于任意一个服务器,均执行以下步骤:
将服务器的实时资源利用率T
当服务器的实时资源利用率T
当服务器的实时资源利用率T
当服务器的实时资源利用率T
当服务器的实时资源利用率T
当服务器的实时资源利用率T
优选的,资源利用率为CPU利用率,聚类采用K-Means聚类算法。
优选的,通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率,具体包括以下步骤:
分别计算各个正常负载的服务器的能效,其中,服务器的能效由服务器的能耗以及违约损失率决定,将负载过重的服务器上的部分虚拟机依次迁移至正常负载的服务器中的、当前最高能效的服务器上,直至负载过重的服务器的实时资源利用率T
分别计算各个负载较轻的服务器的能效,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器中的、当前最高能效的服务器上,并禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去。
优选的,计算服务器的能效通过以下公式实现:
SLA
P
其中,SLA
一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一算法的步骤。
本发明具有以下有益效果:
1、本发明中的云数据中心以能效为目标的虚拟机部署算法及系统,分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。
2、在优选方案中,本技术方案根据各个服务器过去一段时间的资源利用率来确定各个服务器的动态分类,再对动态分类后的服务器进行分配,相比现有技术,这种分配方法对各种应用场景都可以应用,应用范围更广。
3、在优选方案中,由于虚拟机频繁迁移会增加云计算中心的能耗,降低云计算中心的服务器的稳定性,本技术方案还通过禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去,从而避免服务器频繁的迁移,进一步提高服务器的能效。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照附图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是云数据中心以能效为目标的虚拟机部署算法的分配流程图(图中变量M为云数据中心服务器的数量);
图2是本发明中的云数据中心以能效为目标的虚拟机部署算法与其他虚拟机部署算法的性能比对图(其中,(a)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的能耗比对图,(b)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的能效比对图,(c)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的SLA违约率比对图,(d)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的SVTH比对图,(e)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的PDCM比对图,(f)图表示本方案中的虚拟机部署算法与其他虚拟机部署算法的虚拟机迁移数比对图)。
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
实施例一:
如图1所示,本实施例中公开了一种云数据中心以能效为目标的虚拟机部署算法,包括以下步骤:
分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;
分别将各个服务器的实时资源利用率与其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;
通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。
此外,在本实施例中还公开一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一算法的步骤。
本发明中的云数据中心以能效为目标的虚拟机部署算法及系统,分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。
实施例二:
在CDC云数据中心,有大量的服务器相互连接,并向云用户提供各种云服务。数据中心内的这些服务器具有不同的资源利用率(例如,CPU利用率、内存利用率和磁盘利用率)。由于服务器的CPU利用率占能耗很大比例,本技术方案通过设置四个阈值将数据中心内的服务器划分为五个类。这四个阈值分别是T
具体的,在本实施例中,公开了一种云数据中心以能效为目标的虚拟机部署算法,包括以下步骤:
S1、分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;
设云数据中心的服务器集合S={S
设云数据中心的虚拟机集合V={VM
其中,对于任意一台服务器S
设服务器S
S11、使用K-Means聚类算法对服务器S
S12、分别计算服务器S
其中,对于任意一个类簇C
其中,median(C
S13、计算MAD值集MR={MR
对MAD值集中的MAD值按从小至大进行排序并分成四等份,从小至大处于三个分割点位置的MAD值分别为MAD值集的第一四分位数Q
计算第三四分位数Q
IQR=Q
S14、基于服务器S
T
T
T
T
其中,T
其中,分别获取各个服务器的自适应分类阈值的源代码如下:
Algorithm 1KMIR algorithm(K-Means-Mad-IQR)
Input:The past CPU utilization set
T={T
Output:Four thresholds T
1:for i=1to M do
2:Obtain the past CPU utilization setT={T
3:Get the clustersC={C
K-Means algorithm,thatis C=KMeans(T,k);
//参数k为聚类的个数
4:for j=1to kdo
5:MC[j]←Mad(C
//计算各个类簇的mad值
6:endfor
7:Calculate IQR(MC)by using Eq.(2);
8:Obtain the four thresholdsT
9:end for
10:return T
S2、分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻这五种;
如图1所示,对于任意一个服务器S
将服务器S
当服务器S
当服务器S
当服务器S
当服务器S
当服务器S
S3、将负载过重的服务器上的虚拟机迁移至正常负载的服务器,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器,并禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去。
由于虚拟机的频繁迁移会增加云计算中心的能耗,降低云计算中心的服务器的稳定性,本技术方案还通过禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去,从而避免服务器频繁的迁移,进一步提高服务器的能效。
分别计算各个正常负载的服务器的能效,其中,服务器的能效由服务器的能耗以及违约损失率决定,将负载过重的服务器上的部分虚拟机依次迁移至正常负载的服务器中的、当前最高能效的服务器上,直至负载过重的服务器的实时资源利用率T
其中,迁移算法的源代码如下:
Input:T
Output:migrateMap
1:serverList=getServerlist();
//获取服务器列表
2:For server to serverlist do
3:TS=server.getUtilizationOfCPU();
//获取资源利用率
4:If(T
5:vmList=getAllVmToMigrate(server);
//迁移服务器上的所有服务器
6:OneMap=getVMPlacement(vmlist);
7:migrateMap.add(OneMap);
8:Else If(T
9:continue;
10:Else If(T
11:vmList=getVmToMigrate(server);
//迁移服务器上的一部分虚拟机
12:TwoMap=getVMPlacement(vmlist);
13:migrateMap.add(TwoMap);
14:End If
15:End For
16:return migrateMap.
分别计算各个负载较轻的服务器的能效,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器中的、当前最高能效的服务器上。
其中,计算服务器的能效通过以下公式实现:
SLA
P
其中,SLA
将负载过重的服务器上的虚拟机迁移至正常负载的服务器,将负载过轻的服务器上的虚拟机全部迁移至负载较轻的服务器的虚拟机部署算法,源代码如下:
Algorithm 3AFED-EF
Input:T
Output:VMs placement
1:vmList=getVmlist();//获得虚拟机列表
2:serverListOne=getLightlyLoadedServerlist();
3:serverListTwo=getNormallyLoadedServerlist();
4:vmlist.sortByCPUDecreasing();//根据虚拟机的CPU利用率对虚拟机进行降序排列
5:For vm to vmlist()do
6:minPower=Min_VALUE;
7:allocatedServer=Null;
8:Forserverto serverListOne or serverListTwo do
//对候选服务器列表中的每个服务器
9:If(server.isSuitableForVm(vm))Then
10: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)Then
18:minPower=EF;
19:allocatedServer=server;
//选择一个具有最高能效的服务器来实现虚拟机的部署,并返回最终结果
20:End if
21:End If
22:End for
23:allocate the VM to server and achieve placement
24:End for
25:return VMs placement
实验验证:
创建一个云数据中心,该云数据中心由800台服务器,在该云数据中心由HPProliantG4和HPProliantG5两种型号的服务器组成,采用不同的虚拟机部署算法以及本发明中的虚拟机部署算法对该云数据中心的虚拟机部署进行测试,并从能耗、VM迁移数、SLA(即违约损失率)(SLA=SVTH*PDCM)、SVTH(SLA violation time per active server,每个服务器的SLA违约率时间)、PDCM(Performance degradation caused by VMmigration,迁移机迁移导致的性能降低)和能效这六个评价指标评价不同虚拟机部署算法的性能,得到如图2所示的评价指标比对图,从图中可以看出,本发明中的虚拟机部署算法(即图中AFED-1.0)能效最高(值越大越好),SLA违约率和能耗最低(值越小越好),且虚拟机迁移数量也较低,可见本发明中的虚拟机部署算法性能最好。
综上所述,本发明中的云数据中心以能效为目标的虚拟机部署算法及系统,分别获取各个服务器的自适应分类阈值及各个服务器的实时资源利用率;分别将各个服务器的实时资源利用率及其对应的自适应阈值进行比较,确定各个服务器的实时动态类别;其中,动态类别包括负载过重、负载中等、正常负载、负载较轻、负载过轻五类;通过将负载过重服务器上的虚拟机迁移至正常负载且具有最高能效的服务器上以降低其违约率和减少服务器的迁移频率,提高云计算中心的稳定性,同时将负载过轻的服务器上的虚拟机迁移至负载较轻且具有最高能效的服务器上,关闭负载过轻的服务器,以提高负载较轻服务器的资源利用率,实现同时降低云数据中心的能源消耗和违约率。
在优选方案中,本技术方案根据各个服务器过去一段时间的资源利用率来确定各个服务器的动态分类,再对动态分类后的服务器进行分配,相比现有技术,这种分配方法对各种应用场景都可以应用,应用范围更广。
在优选方案中,由于虚拟机频繁迁移会增加云计算中心的能耗,降低云计算中心服务器的稳定性,本技术方案还通过禁止负载中等的服务器、正常负载的服务器、负载较轻的服务器上的虚拟机迁移出去,从而避免服务器频繁的迁移,进一步提高服务器的能效。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 云数据中心以能效为目标的虚拟机部署算法及系统
- 云数据中心基于多资源的高能效虚拟机放置方法