徐勝超 ,宋 娟 ,潘 歡
(1.廣州華商學(xué)院 數(shù)據(jù)科學(xué)學(xué)院,廣東 廣州 511300;2.寧夏大學(xué) 寧夏沙漠信息智能感知重點(diǎn)實(shí)驗(yàn)室,寧夏 銀川 750021)
如何提高云數(shù)據(jù)中心的物理主機(jī)的利用效率并進(jìn)行負(fù)載均衡操作至關(guān)重要[1],目前大部分云服務(wù)提供商都采用虛擬機(jī)遷移技術(shù)[2]。虛擬機(jī)選擇是整個(gè)虛擬機(jī)遷移過程的一個(gè)重要步驟,它的功能是從云數(shù)據(jù)中心的異常物理主機(jī)中運(yùn)用一定的算法選擇出需要候選遷移的虛擬機(jī),從而為后續(xù)的虛擬機(jī)放置過程提供輸入?yún)?shù)。
具有高關(guān)聯(lián)度的虛擬機(jī)之間更容易觸發(fā)超負(fù)載事件,因此如何防止那些高關(guān)聯(lián)性的虛擬機(jī)在虛擬機(jī)放置過程中被分配到同一個(gè)物理節(jié)點(diǎn)上就是一個(gè)關(guān)鍵問題[3-4]。
文獻(xiàn)[5]提出了虛擬機(jī)選擇和虛擬機(jī)放置過程結(jié)合起來,可以充分提高物理資源的使用效率,具有一定的優(yōu)勢(shì);文獻(xiàn)[6-7]提出了貪心算法優(yōu)化的虛擬機(jī)選擇策略,在選擇過程中通過動(dòng)態(tài)調(diào)整物理資源利用閾值邊界,可以很好地降低能量消耗;文獻(xiàn)[8-9]提出了溫度感知的虛擬機(jī)選擇策略,它將物理主機(jī)的處理器的溫度作為虛擬機(jī)選擇的標(biāo)準(zhǔn),是一種考慮硬件的虛擬機(jī)選擇策略。文獻(xiàn)[10]提出了數(shù)據(jù)依賴的虛擬機(jī)選擇策略,它在選擇候選遷移虛擬機(jī)的過程中考慮虛擬機(jī)之間的數(shù)據(jù)依賴關(guān)系,它的思路與本文的考慮十分相似。實(shí)驗(yàn)結(jié)果表明該策略也可以提高云數(shù)據(jù)中心的各類指標(biāo)性能,但是文獻(xiàn)[5]-[10]都沒有考慮虛擬機(jī)的關(guān)聯(lián)性。
虛擬機(jī)之間的相關(guān)性如果按照統(tǒng)計(jì)學(xué)的方式進(jìn)行建模,考慮物理資源的歷史信息,在這種因素下考慮虛擬機(jī)選擇問題會(huì)更加接近真實(shí)的情況。本文提出一種考慮虛擬機(jī)關(guān)聯(lián)性的虛擬機(jī)選擇策略,稱為PC-VMS(Pearson Correlation coefficient Virtual Machine Selection),即把皮爾遜相關(guān)系數(shù)的計(jì)算方法應(yīng)用于虛擬機(jī)CPU歷史利用率數(shù)據(jù),建立了衡量每對(duì)虛擬機(jī)CPU 利用率之間的相關(guān)性的數(shù)學(xué)模型;PC-VMS 會(huì)獲取每對(duì)虛擬機(jī)最近n 次的CPU 利用率,根據(jù)輸入的兩組數(shù)據(jù)來計(jì)算皮爾遜相關(guān)系數(shù),最后在一組相關(guān)性最高的虛擬機(jī)中選擇一個(gè)CPU 利用率最高的對(duì)象作為候選遷移虛擬機(jī),從而為后續(xù)的虛擬機(jī)放置步驟作為輸入?yún)?shù)。
PC-VMS 虛擬機(jī)選擇策略的仿真和測(cè)試過程是放到整個(gè)虛擬機(jī)遷移過程中完成的。經(jīng)過PC-VMS 虛擬機(jī)選擇策略優(yōu)化后的虛擬機(jī)遷移實(shí)驗(yàn)結(jié)果表明,PC-VMS 可以穩(wěn)定云計(jì)算的服務(wù)質(zhì)量水平,降低能量消耗。
PC-VMS 依托CloudSim 模擬器工具來工作與仿真云數(shù)據(jù)中心的各類性能指標(biāo),經(jīng)過PC-VMS 優(yōu)化后的虛擬機(jī)遷移過程具體包括以下4 個(gè)步驟[11]:
(1)周期性地完成云數(shù)據(jù)中心的所有物理主機(jī)狀態(tài)檢測(cè)(over-utilized 或under-utilized),形成異常物理主機(jī)列表;
(2)針對(duì)異常的物理主機(jī),采用PC-VMS 策略完成虛擬機(jī)的選擇,形成侯選遷移虛擬機(jī)列表;
(3)針對(duì)候選遷移的所有虛擬機(jī),完成虛擬機(jī)放置過程;
(4)反復(fù)執(zhí)行步驟(1)~(3),通過設(shè)置一個(gè)是周期(通常是一周),達(dá)到該時(shí)間段虛擬機(jī)遷移過程就結(jié)束。
PC-VMS 與CloudSim 項(xiàng)目中不同的是,在步驟(2)中,著重考慮虛擬機(jī)的處理器利用率的關(guān)聯(lián)度,通過建立虛擬機(jī)之間的關(guān)聯(lián)度數(shù)學(xué)模型,設(shè)計(jì)了虛擬機(jī)之間的皮爾遜相關(guān)系數(shù),其他的步驟(1)和步驟(3)繼續(xù)借鑒了CloudSim 項(xiàng)目中的已有的優(yōu)化策略。
1.2.1 皮爾遜相關(guān)系數(shù)
假設(shè)一個(gè)物理主機(jī)上面有n 個(gè)運(yùn)行的虛擬機(jī)VM,假設(shè)這些虛擬機(jī)組成了一個(gè)向量,VM={VM1,VM2,…,VMn},為了計(jì)算物理主機(jī)上虛擬機(jī)之間的相關(guān)性,本文算法使用了皮爾遜相關(guān)系數(shù),其計(jì)算公式如下:
式中,r 表示皮爾遜相關(guān)系數(shù),i 和n 表示虛擬機(jī)的編號(hào),xi和yi分別表示的是虛擬機(jī)VMi最近的k 次CPU 利用率,各自表示虛擬機(jī)最近的k 次CPU 利用率的平均值。式(2)為虛擬機(jī)CPU 歷史利用率矩陣U:
式中,矩陣的行代表超負(fù)載主機(jī)上的某個(gè)虛擬機(jī)VMi的利用率,矩陣的列表示模擬器運(yùn)行過程中的某個(gè)時(shí)間點(diǎn)tj,矩陣中的數(shù)據(jù)uij表示虛擬機(jī)VMi在時(shí)間點(diǎn)tj下的CPU 利用率。接下來,利用CPU 歷史利用率矩陣,根據(jù)皮爾遜相關(guān)系數(shù)的計(jì)算公式計(jì)算虛擬機(jī)之間的相關(guān)性,同樣把結(jié)果保存在一個(gè)矩陣(C)中,如式(3)所示:
式中,矩陣的行和列都代表著虛擬機(jī)VMi;cij代表虛擬機(jī)CPU 利用率之間的皮爾遜相關(guān)系數(shù),cij∈(-1,1);矩陣中的數(shù)字1 是無效的值。
1.2.2 云數(shù)據(jù)中心的總體能量消耗模型
云數(shù)據(jù)中心能量消耗主要由物理主機(jī)的所有部件的能量消耗組成。一個(gè)物理主機(jī)所消耗的能量主要由處理器、內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬組成。根據(jù)這個(gè)思路,本文設(shè)計(jì)了單個(gè)物理主機(jī)的能量消耗。第j 個(gè)物理主機(jī)在[t0,t1]時(shí)間段的總體能量消耗Ej可以按照式(4)來計(jì)算:
那么整個(gè)云數(shù)據(jù)中心的能量消耗Etotal為式(5):
其中,m 是物理主機(jī)個(gè)數(shù)。
1.2.3 SLA 違規(guī)在線時(shí)間(SLA violation Time per Active Host,SLATAH)
SLA 在線時(shí)間(SLA time per host)體現(xiàn)了物理主機(jī)具有高服務(wù)質(zhì)量的在線時(shí)間情況。
其中,m 為云數(shù)據(jù)中心的物理主機(jī)數(shù)量,j 表示物理主機(jī)的編號(hào),Tsj是物理主機(jī)CPU 利用率達(dá)到100%的時(shí)間,Taj是物理主機(jī)處于在線活躍狀態(tài)的時(shí)間。
1.2.4 虛擬機(jī)遷移后的性能降低(Performance Degradation due to Migrations,PDM)
其中,n 表示云數(shù)據(jù)中心的虛擬機(jī)數(shù)量,i 表示虛擬機(jī)的編號(hào),Ddi是由于虛擬機(jī)VMi遷移導(dǎo)致的性能下降的估計(jì)值,Dri是請(qǐng)求虛擬機(jī)VMi的整個(gè)時(shí)間段內(nèi)總的CPU MIPS 計(jì)算能力。
1.2.5 SLA 違規(guī)率(SLA Violation)
SLA 的違規(guī)率的計(jì)算通過式(8)計(jì)算:
SLA Violation 違規(guī)率是體現(xiàn)云服務(wù)提供商的高服務(wù)質(zhì)量的重要指標(biāo)。
本小節(jié)詳細(xì)描述PC-VMS 虛擬機(jī)選擇策略涉及的算法及其工作流程。該策略使用了兩個(gè)算法,在算法1中,計(jì)算皮爾遜相關(guān)系數(shù)矩陣,接著調(diào)用算法2 來尋找相關(guān)性大小位于前k 位分別所對(duì)應(yīng)的虛擬機(jī),最后從算法2 返回的虛擬機(jī)列表中選擇一個(gè)CPU 利用率最大的虛擬機(jī)遷移出去。
(1)算法1:基于皮爾遜相關(guān)系數(shù)的虛擬機(jī)選擇策略
輸入:物理主機(jī)負(fù)載檢測(cè)階段的異常物理主機(jī)MigratedHostList
輸出:要遷出的虛擬機(jī)列表VmsToMigratedList
①獲取物理主機(jī)上的虛擬機(jī)列表,保存到變量migratableVms 列表中;
②計(jì)算當(dāng)模擬器當(dāng)前的時(shí)刻time,將time 除以300得到timeStep,如果timeStep<5,則啟用備用的虛擬機(jī)選擇策略,結(jié)束該算法,否則,進(jìn)入步驟③;
③根據(jù)獲取的migratableVms 計(jì)算CPU 歷史利用率矩陣cpuUsage;
④根據(jù)矩陣cpuUsage 計(jì)算CPU 利用率之間的皮爾遜相關(guān)系數(shù),結(jié)果保存到矩陣pearsonMatrix 中;
⑤調(diào)用算法2 尋找虛擬機(jī)列表,返回結(jié)果保存到列表vmList 中;
⑥在vmList 尋找一個(gè)CPU 利用率最大的虛擬機(jī),保存該虛擬機(jī)在vmList 中的索引值index;
⑦返回vmList 中索引為index 的虛擬機(jī),存入VmsTo-MigratedList。
(2)算法2:尋找皮爾遜相關(guān)系數(shù)大小最近的k 個(gè)所對(duì)應(yīng)的虛擬機(jī)
輸入:pearsonMatrix,migratableVms,k
輸出:與最近k 個(gè)相關(guān)系數(shù)大小有關(guān)的虛擬機(jī)列表vmList
①遍歷矩陣pearsonMatrix 的行和列,取出里面的元素,存放到一個(gè)名為maxCoefficients 的HashSet 集合中;
②對(duì)maxCoefficients 中的元素進(jìn)行降序排列,結(jié)果賦給一個(gè)List 集合,取名為coefficientsList;
③取出集合coefficientsList 中前k 個(gè)元素,存放到List集合top_k 中;
④遍歷pearsonMatrix 矩陣的每一行,找出這一行最大的那個(gè)元素,然后判斷top_k 列表是否包含這個(gè)元素,如果包含,則從migratableVms 列表中根據(jù)當(dāng)前遍歷的行號(hào)找到一個(gè)虛擬機(jī),添加這個(gè)虛擬機(jī)到列表vmList 中;
⑤返回vmList。算法1 和算法2 兩個(gè)算法經(jīng)過少量的修改即可轉(zhuǎn)化成為代碼。
PC-VMS 依托了CloudSim 各個(gè)運(yùn)行模塊,在CloudSim云模擬器中每個(gè)物理主機(jī)上都運(yùn)行有一個(gè)本地代理Local Broker,PC-VMS 虛擬機(jī)選擇優(yōu)化策略的實(shí)現(xiàn)主要在此模塊中完成,算法1 和算法2 的實(shí)現(xiàn)基于Java 實(shí)現(xiàn)。上述算法1 和算法2 的運(yùn)行流程經(jīng)過少量修改即可轉(zhuǎn)化為PC-VMS 的代碼。
(1)創(chuàng)建物理主機(jī)
云數(shù)據(jù)中心的能量消耗模型是最常見的CoMon project,它是由planetlab 實(shí)驗(yàn)室開發(fā)的一個(gè)項(xiàng)目,也是目前云數(shù)據(jù)中心的模擬器的典型BenchMark 模型[12]。測(cè)試指標(biāo)都參考了1.2 節(jié)中提到的虛擬機(jī)遷移次數(shù)、SLA 違規(guī)率、能量消耗情況。物理主機(jī)配置如表1 所示。
表1 云數(shù)據(jù)中心物理主機(jī)硬件配置
(2)創(chuàng)建虛擬機(jī)
創(chuàng)建的虛擬機(jī)參考的是普通網(wǎng)絡(luò)客戶端的應(yīng)用程序訪問類型,不同的是每個(gè)虛擬機(jī)都是CPU 能力不同,并且內(nèi)存也有所改變??偣矂?chuàng)建了4 種虛擬機(jī)類型,配置參數(shù)如表2 所示。
表2 PC-VMS 虛擬機(jī)配置參數(shù)表
對(duì)于虛擬機(jī)的初始化放置策略,使用的是首次適應(yīng)的方法,即首次為虛擬機(jī)尋找宿主機(jī)的時(shí)候,如果找到了一個(gè)擁有足夠資源創(chuàng)建這個(gè)虛擬機(jī)的物理主機(jī),就立即分配給它,而不再考慮后面的主機(jī),即使有更合適的選擇。這樣做的好處就是在為虛擬機(jī)首次尋找目標(biāo)主機(jī)的過程中節(jié)約了時(shí)間,虛擬機(jī)請(qǐng)求的個(gè)數(shù)如表3 所示。
表3 PC-VMS 虛擬機(jī)選擇優(yōu)化策略運(yùn)行時(shí)間
在實(shí)驗(yàn)中的物理主機(jī)負(fù)載檢測(cè)中,采用的是魯棒局部歸約主機(jī)負(fù)載檢測(cè),即選擇最近j 個(gè)物理主機(jī)進(jìn)行規(guī)約預(yù)測(cè)出資源利用率邊界然后選擇,j 取值為10。
PC-VMS 虛擬機(jī)選擇策略將與CloudSim4.0 內(nèi)置的策略進(jìn)行對(duì)比,這些內(nèi)置的策略包括隨機(jī)選擇策略(Random Selection,RS)、最小利用率策略(Minimum Utilization,MU)、最大關(guān)聯(lián)選擇策略(Maximum Correlation,MC)和最小時(shí)間選擇策略(Minimum Migration Time,MMT)。在虛擬機(jī)放置策略方面,實(shí)驗(yàn)中采用的是遞減裝箱方法(Best-Fit-Decreasing,BFD)。
整個(gè)云客戶端被分配了1 000 個(gè)虛擬機(jī),然后讓這些虛擬機(jī)執(zhí)行2 000 個(gè)云任務(wù),每個(gè)任務(wù)的長(zhǎng)度是216 000 000 MI,給CloudSim 設(shè)定的模擬時(shí)間是24 h(86 400 s)。最后,每次保持上述的設(shè)置不變,在CloudSim 模擬器中測(cè)試了包括本文算法在內(nèi)的5 種虛擬機(jī)選擇策略。表4 展示了它們的測(cè)試結(jié)果。
從表4 的測(cè)試的結(jié)果來看,PC-VMS 虛擬機(jī)選擇策略在降低能量消耗方面的效果要稍微好于其他策略,MU 策略的能量消耗是最大的,另外3 種策略的能耗基本持平。表4 的第3、4 列顯示了在虛擬機(jī)遷移次數(shù)以及SLA 違規(guī)次數(shù)方面的情況,PC-VMS 虛擬機(jī)選擇策略則明顯少于其他4 種策略,所以PC 虛擬機(jī)選擇策略帶來的性能下降和SLA 違規(guī)率也是最低的。PC-VMS 虛擬機(jī)選擇策略相比于其他策略擁有低能量消耗的優(yōu)勢(shì),并且大幅度地降低了SLA 違規(guī)率,這有利于企業(yè)實(shí)現(xiàn)綠色節(jié)能的云計(jì)算。
表4 云數(shù)據(jù)中心不同虛擬機(jī)選擇策略測(cè)試結(jié)果
從表4 也可以看出,PC-VMS 虛擬機(jī)選擇策略明顯地降低了虛擬機(jī)遷移次數(shù),從而也降低了物理主機(jī)遭受SLA 違例的次數(shù)。由于MU 虛擬機(jī)選擇策略每次選擇CPU 利用率最低的那個(gè)虛擬機(jī)進(jìn)行遷移,可能需要反復(fù)執(zhí)行算法選擇多個(gè)虛擬機(jī)遷出,才能使過度負(fù)載的物理主機(jī)重新回到正常負(fù)載水平,因此該策略的能耗、SLA違規(guī)率、虛擬機(jī)遷移次數(shù)和SLA 違規(guī)次數(shù)都較高。PC-VMS虛擬機(jī)選擇策略還有一個(gè)重要的優(yōu)勢(shì)是它在整個(gè)遷移過程中所導(dǎo)致的性能下降比率最低,這得益于該策略的虛擬機(jī)遷移次數(shù)較少,因?yàn)槊看翁摂M在線遷移的過程中難免會(huì)損失部分性能。
利用PC-VMS 虛擬機(jī)選擇算法優(yōu)化之后,當(dāng)云平臺(tái)的虛擬機(jī)的請(qǐng)求個(gè)數(shù)從100~600 個(gè)變化時(shí),各個(gè)虛擬機(jī)選擇策略的總體能量消耗比較如表5 所顯示。從表5 可以看出,PC-VMS 比CloudSim4.0 中已有的策略在總體能量消耗上要節(jié)約20%~25%,能量消耗基本呈線性變化。分析原因是雖然云數(shù)據(jù)中心的整體物理主機(jī)個(gè)數(shù)為800 個(gè),但是隨著虛擬機(jī)個(gè)數(shù)的變化,在虛擬機(jī)比較少的時(shí)候,大部分物理主機(jī)可以切換到關(guān)閉狀態(tài),能量消耗自然降低了。
表5 各類策略總體能量消耗性能比較 (kWh)
云數(shù)據(jù)中心利用虛擬機(jī)遷移技術(shù)來降低總的能量消耗,同時(shí)必須盡量滿足SLA 違規(guī)。作為虛擬機(jī)遷移過程的一部分,虛擬機(jī)選擇算法要從狀態(tài)異常的物理主機(jī)中精準(zhǔn)地選擇出候選遷移的虛擬機(jī)。本文提出了一種根據(jù)虛擬機(jī)CPU 利用率之間的相關(guān)性來選擇虛擬機(jī)的PC-VMS 策略,PC-VMS 虛擬機(jī)選擇策略不僅僅限制于在CloudSim 模擬器中,還可以與其他的開源云平臺(tái)結(jié)合起來使用,或與其他更加先進(jìn)的虛擬機(jī)放置算法結(jié)合起來使用,可以更好地提高云數(shù)據(jù)中心的各個(gè)性能指標(biāo)[13-15]。