一、目的:
該算法的目的是保證雲計算環境的計算平均分攤到各個資源上,提升整體資源使用率;該算法從全局考慮了穩定因素,從一定程度上防止了頻繁遷移導緻系統“顫抖”。
二、算法描述:
假定前提:
實體機: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周期内這些實體機,以及虛拟機不再參與遷移。