一、目的:
该算法的目的是保证云计算环境的计算平均分摊到各个资源上,提升整体资源利用率;该算法从全局考虑了稳定因素,从一定程度上防止了频繁迁移导致系统“颤抖”。
二、算法描述:
假定前提:
物理机:P1,P2,……,Pn
按照物理机性能设置每个物理机权值:LD1,LD2,……,LDn
虚拟机:V1,V2,……,Vn
平均化计算周期:T
需要迁出的最高限定值:H
需要迁入的最低限定值:L
需要迁入的物理机队列:IQ
需要迁出的物理机队列:OQ
需要迁移的虚拟机列表:VQ
算法描述
1、 平均法去掉瞬时尖峰值计算所有物理机,以及虚拟机某段时长的平均cpu利用率;
在迁移过程要防止因为瞬时峰值引起云计算内部应用服务频繁迁移,导致云计算内部的“颤动”,计算方式如下:每个物理机拥有一个队列,保存T周期的m个性能数据,每次新的监控数据cpu利用率进入后,将最久的监控数据移出,将新数据加入到队列里,计算队列中剩余值,计算公式如下:AVGOFCPU=(SUMi-1+DATAnew-DATAlast)/m;
注:如果队列中没有保存一个T周期的数据不做计算,不列入本次计算范围内。
2、 按照迁出的最高限定值,以及迁入的最低限定值与各个物理机AVGOFCPU相比,得到两个队列:
AVGOFCPU>H,加入到OQ,OQ={OP1,OP2,….}
AVGOFCPU<L,加入到 IQ,IQ={IP1,IP2,……}
3、 计算OQ,以及IQ所有物理机中剩余计算能力:
公式如下:剩余计算能力=(1-AVGOFCPU)*LD
将OQ,IQ中所用物理机中的剩余计算能力,求平均,得到平均剩余计算能力;
将IQ中所用物理机按剩余计算能力从高到低进行排序;
4、 取得OQ中物理机所拥有的虚拟机,评估其目前占用的计算能力值:
其计算公式如下:
虚拟机占有的绝对计算能力=所在物理机AVGOFCPU*该物理机权值*虚拟机cpu监控值*虚拟机cpu个数/(该物理机上所有虚拟机虚拟机cpu监控值*虚拟机cpu数之和)
根据占有计算能力值从高到低进行排序,生成VQ列表。
5、 采用贪婪算法计算那些虚拟机需要迁移,以及迁移目的物理机。
算法描述:
A、从VQ中取得占用的计算能力值最高的虚拟机V,从IQ中取得剩余计算能力最大的物理机IP,设该虚拟机所在物理机为OP:
判断:OP剩余计算能力+V占用计算能力<IP剩余计算能力-V占用计算能力
是:则可以迁移
—〉V迁移到OP。
OP剩余计算能力= OP剩余计算能力+V占用计算能力
IP剩余计算能力= IP剩余计算能力-V占用计算能力
对IQ按照剩余计算能力重新排序。
否:不能迁移,将该信息进入告警队列
B、将V从VQ队列中移出,判断VQ是否为空,如为空,则进行下一步操作,否则重复进行A操作。
6、依次遍历待迁队列,执行迁移操作,迁移成功后,清空相应的物理机,以及虚拟机的监控统计数据队列,以确保在T周期内这些物理机,以及虚拟机不再参与迁移。