楊柳青,王 沖
(1.玉林師范學(xué)院 教育技術(shù)中心,廣西 玉林 537000; 2.桂林電子科技大學(xué) 商學(xué)院, 廣西 桂林 541004)
虛擬機(jī)遷移是構(gòu)造綠色節(jié)能云數(shù)據(jù)中心的關(guān)鍵技術(shù)[1-2]。虛擬機(jī)遷移的過(guò)程非常復(fù)雜,目前以Cloudsim云模擬器工具包為代表的大部分文獻(xiàn)將其劃分為物理主機(jī)狀態(tài)檢測(cè)、虛擬機(jī)選擇和虛擬機(jī)放置3個(gè)步驟[3],每個(gè)步驟都可以采用算法或者策略進(jìn)行優(yōu)化。
物理主機(jī)狀態(tài)檢測(cè)是通過(guò)監(jiān)視云數(shù)據(jù)中心的所有物理主機(jī)的資源使用狀態(tài),采用一定的算法或者策略,把那些運(yùn)行異常(超負(fù)載或低負(fù)載)的物理節(jié)點(diǎn)選擇出來(lái),形成候選遷移物理主機(jī)列表。
在接下來(lái)的虛擬機(jī)選擇中,也要從異常的物理主機(jī)上選擇出合適的虛擬機(jī),形成候選遷移虛擬機(jī)列表。通過(guò)虛擬機(jī)放置策略,將虛擬機(jī)選擇階段中選擇出來(lái)的虛擬機(jī)列表按照一定的算法重新放置到云數(shù)據(jù)中心其他正常狀態(tài)下的物理節(jié)點(diǎn)上,從而保證整個(gè)云數(shù)據(jù)中心的負(fù)載均衡和節(jié)省能量消耗。
物理主機(jī)狀態(tài)檢測(cè)可以通過(guò)物理資源使用邊界閾值管理算法等進(jìn)行優(yōu)化[4-5];虛擬機(jī)選擇可以通過(guò)虛擬機(jī)尺寸與粒度、虛擬機(jī)遷移時(shí)間長(zhǎng)短等算法進(jìn)行優(yōu)化[6-7];有些文獻(xiàn)把虛擬機(jī)放置稱為多目標(biāo)優(yōu)化問(wèn)題或者裝箱問(wèn)題[8],該過(guò)程也有很多智能算法進(jìn)行優(yōu)化,例如螢火蟲(chóng)群優(yōu)化算法[9]、遺傳算法[10]、強(qiáng)化學(xué)習(xí)算法[11]、花授粉算法[12]、蟻群算法[13]等。上面的這些算法和這3個(gè)步驟還可以組合起來(lái)使用,但是最終評(píng)價(jià)標(biāo)準(zhǔn)是虛擬機(jī)遷移后的云數(shù)據(jù)中心的節(jié)能效果、物理資源利用實(shí)際效果和服務(wù)等級(jí)協(xié)議(service level agreement, SLA)違規(guī)效果等指標(biāo)。
本文重點(diǎn)研究物理主機(jī)狀態(tài)檢測(cè),在Cloudsim工具包中也稱為物理資源閾值管理策略,這種資源閾值管理策略可以分為主動(dòng)法和被動(dòng)法,其中被動(dòng)法意味著在物理主機(jī)的資源已經(jīng)超過(guò)閾值邊界之后再采取動(dòng)作;主動(dòng)法是指通過(guò)觀察資源使用的樣本數(shù)據(jù)在前一階段的利用率情況,提前預(yù)測(cè)出可能出現(xiàn)狀態(tài)的物理主機(jī),接著進(jìn)行虛擬機(jī)遷移的后續(xù)步驟。
目前已有的物理主機(jī)狀態(tài)檢測(cè)方法大多采用靜態(tài)資源使用率閾值邊界來(lái)確定主機(jī)是超負(fù)載或者低負(fù)載,其資源邊界考慮的維度因素也比較單一, 其針對(duì)的云客戶端也不是自適應(yīng)的,以被動(dòng)的方式檢測(cè)為主。因?yàn)槲锢碇鳈C(jī)資源狀態(tài)是一種隨著時(shí)間和應(yīng)用程序的訪問(wèn)而不斷動(dòng)態(tài)變化的,這對(duì)主機(jī)異常狀態(tài)檢測(cè)方法提出了新的要求。為此,本文提出了基于負(fù)載預(yù)測(cè)物理主機(jī)狀態(tài)檢測(cè)方法 (load prediction based physical host status detection, LP-PHSD)。本文的LP-PHSD是一種自適應(yīng)的、動(dòng)態(tài)的物理主機(jī)檢測(cè)方法,采用時(shí)間序列和二次指數(shù)平滑法預(yù)測(cè)物理主機(jī)在未來(lái)一段時(shí)間內(nèi)的資源使用率情況,確定其閾值邊界,是一種主動(dòng)檢測(cè)策略。LP-PHSD檢測(cè)策略配合后續(xù)虛擬機(jī)選擇階段和虛擬機(jī)放置階段的其他優(yōu)化方法,就構(gòu)成了一個(gè)完整的新型虛擬機(jī)遷移模型。
LP-PHSD物理主機(jī)狀態(tài)檢測(cè)策略通過(guò)Cloudsim來(lái)實(shí)現(xiàn)和仿真,仿真結(jié)果表明,通過(guò)LP-PHSD優(yōu)化策略形成新的虛擬機(jī)遷移模型之后,每周內(nèi)總體能量消耗節(jié)約20%~30%,虛擬機(jī)遷移次數(shù)減少,云服務(wù)質(zhì)量明顯提高。
LP-PHSD物理主機(jī)狀態(tài)檢測(cè)策略依托了Cloudsim模擬器工具包,其中涉及Cloudsim中的相關(guān)模塊主要包括:全局代理、本地代理、虛擬機(jī)管理器等[3]。
一個(gè)云客戶端向云數(shù)據(jù)中心的全局代理請(qǐng)求虛擬機(jī),該全局代理將虛擬機(jī)分派到具體的可用的物理主機(jī)上執(zhí)行。圖1顯示了LP-PHSD物理主機(jī)狀態(tài)檢測(cè)的工作模塊。在Cloudsim中每個(gè)物理主機(jī)上都運(yùn)行有一個(gè)本地代理,他監(jiān)視物理主機(jī)的軟硬件資源,LP-PHSD物理主機(jī)狀態(tài)檢測(cè)策略的實(shí)現(xiàn)代碼主要在本地代理模塊中完成。本地代理根據(jù)物理主機(jī)處理器的利用率情況把其劃分為3類:Pnormal,Pover與Punder,即正常主機(jī),超負(fù)載主機(jī)與低負(fù)載主機(jī)。一般CPU的利用率低于或者高于一個(gè)閾值邊界都處于Pover或Punder狀態(tài),其他的為正常狀態(tài)Pnormal。利用率閾值邊界具體取值多少可以通過(guò)各類閾值管理策略來(lái)測(cè)試、調(diào)整。虛擬機(jī)管理器用來(lái)配合本地代理具體完成虛擬機(jī)遷移的啟動(dòng)與關(guān)閉,這個(gè)工作場(chǎng)景在很多文獻(xiàn)都有描述[3]。
1.2.1 云數(shù)據(jù)中心的能量消耗模型
云數(shù)據(jù)中心主要由大量堆積在一起的物理主機(jī)組成,所以其能量消耗主要由物理主機(jī)的所有部件的能量消耗組成。文獻(xiàn)[14]中認(rèn)為一臺(tái)物理服務(wù)器所消耗的能量百分比大約為:CPU占41%,內(nèi)存占18%,磁盤占7%,PCI插槽占23%,主板占12%?;谶@個(gè)思路,LP-PHSD策略中設(shè)計(jì)的物理主機(jī)的能量消耗數(shù)學(xué)模型為
E(Ucpu)=Eidle+(Emax-Eidle)Ucpu
(1)
(2)
E(Umem)=Eidle+(Emax-Eidle)Umem
(3)
E(Udisk)=Eidle+(Emax-Eidle)Udisk
(4)
E(Ubw)=Eidle+(Emax-Eidle)Ubw
(5)
Ehost=E(Ucpu)+E(Umem)+E(Udisk)+E(Ubw)
(6)
(1)—(6)式中:Ucpu(t),Umem(t),Udisk(t),Ubw(t)分別表示物理主機(jī)在mipsi時(shí)刻的CPU使用率,內(nèi)存使用率,磁盤使用率,網(wǎng)絡(luò)帶寬使用率,0%≤Ucpu(t),Umem(t),Udisk(t),Ubw(t)≤100%;Eidle表示物理主機(jī)CPU、內(nèi)存、磁盤空間、網(wǎng)絡(luò)帶寬在空閑時(shí)的能量消耗,即Ucpu(t)=0%,Umem(t)=0%,Udisk(t)=0%,Ubw(t)=0%時(shí)的能量消耗;Emax表示物理主機(jī)在滿負(fù)載時(shí)的能量消耗,即Ucpu(t)=100%,Umem(t)=100%,Udisk(t)=100%,Ubw(t)=100%時(shí)的能量消耗;mipsi,c是第i個(gè)虛擬機(jī)VMi的第c個(gè)處理單元的MIPS請(qǐng)求情況;MIPSj,c是第j個(gè)物理主機(jī)Mj的第c個(gè)處理單元的整體的MIPS計(jì)算能力;pei表示虛擬機(jī)VMi的處理單元的數(shù)量;PEj表示物理主機(jī)Mj的處理單元的數(shù)量;rj(t)表示分配到物理主機(jī)Mj的虛擬機(jī)的索引集合。
圖1 LP-PHSD物理主機(jī)狀態(tài)檢測(cè)策略實(shí)現(xiàn)模塊Fig.1 Implementation modules of LP-PHSD
一臺(tái)虛擬機(jī)請(qǐng)求的MIPS數(shù)量是隨著應(yīng)用程序的變化而變化的,所以物理主機(jī)的資源使用率也應(yīng)該是隨著應(yīng)用程序的變化而變化。因此,統(tǒng)計(jì)物理服務(wù)器的能量消耗必須在一定的時(shí)間段內(nèi),這樣根據(jù)(1)式可以演化為
Ehost(t)=E(Ucpu(t))+E(Umem(t))+
E(Udisk(t))+E(Ubw(t))
(7)
第j個(gè)物理主機(jī)在[t0,t1]時(shí)間段的總體能量消耗Ehost可以表示為
(8)
整個(gè)云數(shù)據(jù)中心的能量消耗為
(9)
1.2.2SLA違規(guī)在線時(shí)間
當(dāng)一個(gè)云客戶端提交作業(yè)到云計(jì)算平臺(tái)的時(shí)候,資源缺少就會(huì)出現(xiàn)SLA違規(guī),在虛擬機(jī)分配過(guò)程中,一個(gè)重要性能指標(biāo)就是每個(gè)物理主機(jī)的SLA違規(guī)在線時(shí)間(SLA violation time per active host, SLATAH),SLATAH體現(xiàn)了物理主機(jī)具有高服務(wù)質(zhì)量的在線時(shí)間情況,可以表示為
(10)
(10)式中:Tsj是物理主機(jī)CPU利用率達(dá)到100%的時(shí)間;Taj是物理主機(jī)處于在線活躍狀態(tài)的時(shí)間;M為云數(shù)據(jù)中心的主機(jī)數(shù)量。
1.2.3 虛擬機(jī)遷移后的性能降低
Cloudsim中采用了2個(gè)指標(biāo)來(lái)評(píng)價(jià)云數(shù)據(jù)中心的SLA違規(guī)。一是SLATAH指標(biāo);另一個(gè)是虛擬機(jī)遷移后的性能降低(performance degradation due to migrations, PDM)指標(biāo)。(10) 式描述了單活動(dòng)主機(jī)SLA違規(guī)時(shí)間。PDM指標(biāo)可以表示為
(11)
(11)式中:Cdi是虛擬機(jī)VMi遷移導(dǎo)致的性能下降的估計(jì)值;Cri是請(qǐng)求虛擬機(jī)VMi的整個(gè)時(shí)間段內(nèi)總的CPU MIPS計(jì)算能力;N為云數(shù)據(jù)中心的虛擬機(jī)數(shù)量。
1.2.4 能量與SLA違規(guī)的聯(lián)合指標(biāo)
SLA的違規(guī)率的計(jì)算通過(guò) (10) 式和 (11) 式相乘得到,即
SLAViolation=SLATAH·PDM
(12)
最后能量消耗和SLA違規(guī)這2個(gè)指標(biāo)往往是互相沖突的,如果SLA違規(guī)比率過(guò)高,表明云數(shù)據(jù)中心提供服務(wù)出現(xiàn)異常,這樣企業(yè)將會(huì)失去商業(yè)利潤(rùn)。如果使用過(guò)多的IT物理資源來(lái)保證QoS,這樣能量消耗就會(huì)增加,間接提高了企業(yè)的成本。能量與SLA違規(guī)的聯(lián)合指標(biāo)(ESV)是體現(xiàn)云服務(wù)提供商的高服務(wù)質(zhì)量、低SLA違規(guī)比率和總體能量消耗平衡的指標(biāo),表示為
ESV=Etotal·SLAViolation
(13)
虛擬機(jī)的遷移是一臺(tái)虛擬機(jī)從源物理主機(jī)遷移到目標(biāo)物理主機(jī)的過(guò)程,LP-PHSD在工作的時(shí)候,通過(guò)負(fù)載預(yù)測(cè)的方式,首先可以判斷源物理主機(jī)是否處于異常,是否需要啟動(dòng)虛擬機(jī)遷移;同時(shí),還可以判斷目標(biāo)物理主機(jī)是否處于異常狀態(tài),這樣可以保證不會(huì)因?yàn)樘摂M機(jī)遷移而導(dǎo)致超負(fù)載。通過(guò)LP-PHSD工作機(jī)制優(yōu)化后的虛擬機(jī)遷移具體包括下面5個(gè)步驟。
步驟1基于LP-PHSD,進(jìn)行源物理主機(jī)狀態(tài)檢測(cè),形成候選遷移物理主機(jī)列表;
步驟2基于LP-PHSD,進(jìn)行目標(biāo)物理主機(jī)狀態(tài)檢測(cè),形成候選遷移物理主機(jī)列表;
步驟3針對(duì)候選遷移物理主機(jī)列表上的虛擬機(jī)完成虛擬機(jī)選擇,形成候選遷移虛擬機(jī)列表;
步驟4針對(duì)候選虛擬機(jī)列表中的大量虛擬機(jī),基于遞減裝箱算法(best-fit-decreasing bin packing problem,BFD),優(yōu)化完成虛擬機(jī)的重新放置;
步驟5重復(fù)上述步驟1至步驟4,直到指定的時(shí)間周期結(jié)束,或者所有物理主機(jī)都是正常狀態(tài)后停止。
本文的LP-PHSD物理主機(jī)狀態(tài)檢測(cè)方法適應(yīng)于近年來(lái)云客戶端的復(fù)雜應(yīng)用需求,資源邊界的確定具有自適應(yīng)性、動(dòng)態(tài)性,這與Cloudsim工具包中的各個(gè)物理主機(jī)檢測(cè)方法明顯不一樣。圖2顯示了LP-PHSD物理主機(jī)狀態(tài)檢測(cè)的工作流程。
圖2 基于LP-PHSD優(yōu)化后的虛擬機(jī)遷移過(guò)程Fig.2 Virtual machine migration model after LP-PHSD optimized
由于虛擬機(jī)遷移通過(guò)把超負(fù)載Pover或者低負(fù)載Punder物理主機(jī)上的虛擬機(jī)遷移出去,使云數(shù)據(jù)中心的所有物理主機(jī)基本都處于正常狀態(tài)Pnormal,保證云數(shù)據(jù)中心的能量消耗最小,同時(shí)物理資源的利用效率也最高。虛擬機(jī)遷移是有一定的通信開(kāi)銷和額外消耗的,所以虛擬機(jī)遷移是一個(gè)比較嚴(yán)格的行為,否則將會(huì)導(dǎo)致更加壞的性能。
LP-PHSD算法提出基于時(shí)間序列的二次指數(shù)平滑先預(yù)測(cè)出未來(lái)時(shí)間段物理主機(jī)的狀態(tài)情況,再?zèng)Q定是否采取虛擬機(jī)遷移動(dòng)作。時(shí)間序列預(yù)測(cè)是根據(jù)變量之前的歷史數(shù)據(jù)來(lái)預(yù)測(cè)將來(lái)值的模型。
二次指數(shù)平滑預(yù)測(cè)是加權(quán)平均移動(dòng)法的一種特殊類型,給平均移動(dòng)中所有歷史觀察值都賦予一個(gè)平均權(quán)重。有時(shí)候也給某些最近的觀察值一些特殊的重要權(quán)重,原因是比較老的樣本數(shù)據(jù)和最近的樣本數(shù)據(jù)對(duì)預(yù)測(cè)值的影響是不一樣的。最簡(jiǎn)單的一次指數(shù)平滑技術(shù)可以表示為
st=α·xt-1+(1-α)·st-1
(14)
(14)式中:α是平滑因子,是一種權(quán)重變量,α的取值范圍為0<α<1;平滑統(tǒng)計(jì)變量st是之前歷史觀察數(shù)據(jù)xt-1和st-1的簡(jiǎn)單平均權(quán)重值。
在LP-PHSD中,{x1,x2,x3,…,xt-1}表示物理主機(jī)CPU利用率的最近一個(gè)時(shí)間間隔t的歷史數(shù)據(jù)。{s1,s2,s3,…,st-1}是相對(duì)應(yīng)的CPU利用率的預(yù)測(cè)值。從這些樣本觀察值和預(yù)測(cè)值可以得到平均方差(mean square error, MSE)為
(15)
為了找到物理主機(jī)的CPU利用率在t時(shí)刻的預(yù)測(cè)值,必須尋找到最優(yōu)的α。 變量α應(yīng)該可以使最小的平均方差,就是MSE最小,這里可以使用嘗試錯(cuò)誤法來(lái)尋找最佳的α值。
當(dāng)數(shù)據(jù)中有某種趨勢(shì)的時(shí)候,簡(jiǎn)單的一次指數(shù)平滑預(yù)測(cè)并不能完成很好的預(yù)測(cè)。為了處理這種不好的狀態(tài),本文提出了二次指數(shù)平滑預(yù)測(cè)。這和一次指數(shù)平滑比較類似,只是在每個(gè)階段中有2個(gè)組件Level和Trend需要更新。
Level是數(shù)據(jù)的平滑估計(jì)值,Trend是在每個(gè)時(shí)間區(qū)域結(jié)束階段平滑估計(jì)值的平均增長(zhǎng),二次指數(shù)平滑預(yù)測(cè)表達(dá)式為
st=αxt+(1-α)(st-1+bt-1),(0<α<1)
(16)
bt=γ(st-st-1)+(1-γ)bt-1,(0<γ<1)
(17)
(16)—(17)式中:γ是趨勢(shì)平滑因子,實(shí)際是一種權(quán)重變量,γ的取值范圍為0<γ<1;{st},{xt}與一次指數(shù)平滑技術(shù)中的變量含義相同;{bt}是趨勢(shì)變量在時(shí)刻t的最好估計(jì)值。算法的輸出為Pt+m,這里m>0,那么變量x在t+m時(shí)間段的估計(jì)值為
Pt+m=st+mbt
(18)
變量st和bt的初始值的選擇有很多方法,一般情況下選擇s1=x1,有3種情況可以設(shè)置b1,分別為
b1=y2-y1
(19)
(20)
(21)
現(xiàn)在最重要的問(wèn)題是預(yù)測(cè)結(jié)果如何實(shí)際影響到虛擬機(jī)遷移,最終影響云數(shù)據(jù)中心的性能。LP-PHSD中主要用來(lái)對(duì)源物理主機(jī)和目標(biāo)物理主機(jī)的遷移決策。一個(gè)遷移行為是否執(zhí)行主要看物理主機(jī)當(dāng)前與預(yù)測(cè)的CPU利用率情況。LP-PHSD算法的性能并不直接依賴于預(yù)測(cè)的精確度,而是依賴于物理主機(jī)狀態(tài)檢測(cè)中的決策精確度。表1為通過(guò)簡(jiǎn)單一次指數(shù)平滑和二次指數(shù)平滑預(yù)測(cè)后的CPU利用率比較情況。
表1 CPU利用率實(shí)際值與預(yù)測(cè)值的比較
從表1可以看出,簡(jiǎn)單一次指數(shù)平滑預(yù)測(cè)的方差為1.076%,而二次指數(shù)平滑預(yù)測(cè)的方差只有0.039%,顯然預(yù)測(cè)精度更好。本文這里沒(méi)有使用三次指數(shù)平滑預(yù)測(cè),因?yàn)槿沃笖?shù)平滑考慮的時(shí)間因素更加多,CPU的利用率變化比較頻繁,所以只選擇了一個(gè)短期的預(yù)測(cè)技術(shù)。由于物理主機(jī)的狀態(tài)是一個(gè)動(dòng)態(tài)的云計(jì)算環(huán)境,采用預(yù)測(cè)的方式是不合理的,由于LP-PHSD算法的效率并不直接依賴于預(yù)測(cè)的精確度,只是對(duì)遷移動(dòng)作做一個(gè)判斷,虛擬機(jī)遷移動(dòng)作最終應(yīng)該是由資源的動(dòng)態(tài)閾值邊界來(lái)判斷的。所以LP-PHSD算法還結(jié)合了另外一個(gè)資源動(dòng)態(tài)閾值邊界方法:絕對(duì)中位差檢閾值管理策略(median absolute deviation,MAD), MAD也是Cloudsim工具包中的一種方法。
LP-PHSD針對(duì)物理主機(jī)狀態(tài)檢測(cè)分為2個(gè)部分:①虛擬機(jī)遷移的源物理主機(jī)檢測(cè);②目標(biāo)物理主機(jī)檢測(cè)。所以,LP-PHSD中提出2個(gè)算法,除了采用二次指數(shù)平滑預(yù)測(cè)算法外,主要還利用貪心模式的效率閾值邊界遷移策略,這種貪心模式在很多虛擬機(jī)遷移模式中都使用,例如溫度感知遷移策略[5]。針對(duì)源物理主機(jī)的狀態(tài)檢測(cè)算法如算法1。
算法1 源物理主機(jī)的狀態(tài)檢測(cè)
Input: host
Output: migration decision (true/false)
1. flag = false
2. utilization =totalRequestedMips/h.getTotalMips()//通過(guò)底層API獲取當(dāng)前物理主機(jī)的資源利用效率。
3. data[] = h.getUtilizationHistory()
4. upperThreshold = 1-s* MAD//絕對(duì)中位差檢閾值管理邊界策略
5. if (utilization > upperThreshold) then
6. flag = true
7. if (data.length < 10 or flag == false) then
8. return flag
9. currentOverUtilizedHosts.add(h)
10. future_utilization = getHostFutureLoad(data) //利用二次指數(shù)平滑法預(yù)測(cè)
11. if (future_utilization > upperThreshold) then
12. flag = true
13. else
14. flag = false
15. if (flag == true) then
16. overUtilizedHosts.add(h)
17. return flag
算法1將物理主機(jī)作為輸入,把是否后續(xù)遷移動(dòng)作作為算法的輸出。
該算法主要是基于動(dòng)態(tài)的資源使用閾值上邊界,在該策略中,物理主機(jī)在超過(guò)資源使用閾值上邊界時(shí),被認(rèn)為是超負(fù)載的狀態(tài),上邊界的確定是通過(guò)Cloudsim中的絕對(duì)中位差閾值管理策略,該閾值是隨物理主機(jī)負(fù)載的變化而變化。與傳統(tǒng)方法類似,LP-PHSD中首先將上邊界與物理主機(jī)當(dāng)前CPU的利用率做比較,如果物理主機(jī)處于正常狀態(tài),虛擬機(jī)遷移后續(xù)步驟不會(huì)啟動(dòng),云數(shù)據(jù)中心將不會(huì)有改變。
如果發(fā)現(xiàn)物理主機(jī)處于超負(fù)載狀態(tài),那么將完成基于時(shí)間序列的二次指數(shù)平滑CPU利用效率預(yù)測(cè),為了準(zhǔn)確預(yù)測(cè)出物理主機(jī)CPU利用率的值,必須獲得更多的歷史CPU利用率數(shù)據(jù)。根據(jù)數(shù)據(jù)的長(zhǎng)度分別為5,10,15,20進(jìn)行實(shí)驗(yàn),發(fā)現(xiàn)物理主機(jī)狀態(tài)檢測(cè)的最佳長(zhǎng)度是10,就是以最近10個(gè)數(shù)據(jù)點(diǎn)的CPU利用率作為歷史數(shù)據(jù)。LP-PHSD算法的性能在數(shù)據(jù)長(zhǎng)度為10或者12的時(shí)候基本類似。
如果預(yù)測(cè)后的CPU利用率超過(guò)了CPU資源的閾值邊界上限,物理主機(jī)將被加入到超負(fù)載物理主機(jī)列表并將進(jìn)入圖2所示的后續(xù)虛擬機(jī)選擇和虛擬機(jī)放置流程,否則虛擬機(jī)遷移過(guò)程將不會(huì)繼續(xù),這樣可以使得物理主機(jī)的SLA違規(guī)率在短時(shí)間內(nèi)降低。
源物理主機(jī)檢測(cè)算法不能檢測(cè)出當(dāng)前不超負(fù)載但是將在后續(xù)某個(gè)時(shí)間會(huì)超負(fù)載的物理主機(jī),而且該算法不能排除目標(biāo)物理主機(jī)的異常情形。即如果一臺(tái)物理主機(jī)作為目標(biāo)物理主機(jī)被遷移,那么他的負(fù)載情況也需要進(jìn)行判斷,LP-PHSD算法還針對(duì)目標(biāo)物理主機(jī)的狀態(tài)檢測(cè)進(jìn)行了判斷。
LP-PHSD算法的針對(duì)目標(biāo)物理主機(jī)狀態(tài)檢測(cè)如算法2。
算法2 目標(biāo)物理主機(jī)狀態(tài)檢測(cè)
Input: host
Output: migration decision (true/false)
1.flagP = flagF = false
2.utilization =totalRequestedMips/h.getTotalMips()//通過(guò)底層API獲取當(dāng)前物理主機(jī)的資源利用效率
3. data[] = h.getUtilizationHistory()
4. upperThreshold = 1-s* MAD//絕對(duì)中位差檢閾值管理邊界策略
5. if (utilization > upperThreshold) then
6. flagP = true
7. if (data.length < 10) then
8. if (flagP == true)
9. overUtilizedHosts.add(h)
10. return flagP
11. future_utilization = getHostFutureLoad(data) //利用二次指數(shù)平滑法預(yù)測(cè)
12. if (future_utilization > upperThreshold) then
13. flagF = true
14. else flagF = false
15. if (flagF == false and flagP == true) then
16. currentOverUtilizedHosts.add(h);
17. if (flagF == true and flagP == false) then
18. predictedOverUtilizedHosts.add(h);
19. if (flagF == true and flagP == true) then
20. overUtilizedHosts.add(h)
21. return true
22. else
23. return false
目標(biāo)物理主機(jī)狀態(tài)檢測(cè)的判斷與源目標(biāo)主機(jī)的判斷比較類似,所以本節(jié)主要討論2個(gè)算法不同的地方。目標(biāo)主機(jī)檢測(cè)不考慮當(dāng)前的狀態(tài),只考慮CPU利用率的將來(lái)預(yù)測(cè)值。設(shè)計(jì)了2個(gè)狀態(tài)flagP和flagF。flagP表示當(dāng)前的利用率,flagF表示將來(lái)的預(yù)測(cè)值,需要判斷3種情況。
1)當(dāng)前值是超負(fù)載,預(yù)測(cè)值無(wú)超負(fù)載。在這種情況下物理主機(jī)必須加入超負(fù)載物理主機(jī)列表overutilizedList,但是不必繼續(xù)進(jìn)行虛擬機(jī)遷移。
2)當(dāng)前值無(wú)超負(fù)載,預(yù)測(cè)值超負(fù)載。在這種情況下物理主機(jī)必須加入預(yù)測(cè)超負(fù)載物理主機(jī)列表predictedoverutilizedList,但是不必繼續(xù)進(jìn)行虛擬機(jī)遷移。
3)當(dāng)前值超負(fù)載,預(yù)測(cè)值也超負(fù)載。在這種情況下物理主機(jī)必須加入超負(fù)載物理主機(jī)列表overutilizedList,同時(shí)進(jìn)行虛擬機(jī)遷移后續(xù)的虛擬機(jī)選擇、虛擬機(jī)放置步驟。
算法 2可以很容判斷目標(biāo)物理主機(jī)的狀態(tài),這樣超負(fù)載物理主機(jī)和預(yù)測(cè)超負(fù)載物理主機(jī)都被排除到目標(biāo)物理主機(jī)之外,不僅如此,該算法還可以判斷出CPU最小利用率的物理主機(jī),同時(shí)減少算法1中不必要的虛擬機(jī)遷移。
算法2中還可以修改1個(gè)預(yù)測(cè)值到n個(gè)預(yù)測(cè)值,如果在這n個(gè)預(yù)測(cè)值中有k個(gè)超過(guò)了閾值邊界,將啟動(dòng)虛擬機(jī)遷移的后續(xù)步驟,而且變量n和k的值可以調(diào)整。在算法2中設(shè)n=5,k=4。
一般而言,如果n的值越大,那么預(yù)測(cè)值的精度就越高。目標(biāo)物理主機(jī)狀態(tài)判斷完后,將進(jìn)入后續(xù)的虛擬機(jī)選擇和放置策略。遞減裝箱算法將按照當(dāng)前CPU的利用率降序排列,然后每個(gè)虛擬機(jī)都依次放置到正常狀態(tài)的物理主機(jī)之上,保證物理主機(jī)能量消耗盡量最小。根據(jù)LP-PHSD算法,虛擬機(jī)遷移過(guò)程依賴物理主機(jī)的當(dāng)前負(fù)載及將來(lái)的預(yù)測(cè)負(fù)載。在云平臺(tái)運(yùn)行大工作量任務(wù)的時(shí)候,CPU的利用率往往超過(guò)閾值邊界,這時(shí)沒(méi)有合適的目標(biāo)物理主機(jī)進(jìn)行遷移,此時(shí)虛擬機(jī)遷移將不會(huì)發(fā)生,此時(shí)云數(shù)據(jù)中心會(huì)導(dǎo)致SLA違規(guī),云客戶端的響應(yīng)時(shí)間急劇增加,如果這個(gè)時(shí)候從睡眠狀態(tài)的物理主機(jī)重新開(kāi)啟就可以避免SLA違規(guī)。
因?yàn)長(zhǎng)P-PHSD基于負(fù)載預(yù)測(cè)的物理主機(jī)狀態(tài)檢測(cè)算法是在虛擬機(jī)遷移過(guò)程中運(yùn)用的,所以進(jìn)行LP-PHSD實(shí)驗(yàn)分析,必須構(gòu)造云數(shù)據(jù)中心的虛擬機(jī)遷移場(chǎng)景,本文參考Cloudsim3.0工具包,依據(jù)圖1中的功能模塊,實(shí)現(xiàn)了基于Java語(yǔ)言的局部代理,根據(jù)算法1在該代理中進(jìn)行了基于二次指數(shù)平滑負(fù)載預(yù)測(cè)的物理主機(jī)狀態(tài)檢測(cè)優(yōu)化的代碼實(shí)現(xiàn)。
由于LP-PHSD依托于Cloudsim云平臺(tái)工具,在虛擬機(jī)選擇和虛擬機(jī)放置過(guò)程都采用Cloudsim中默認(rèn)的優(yōu)化策略:最短時(shí)間虛擬機(jī)選擇策略(minimum migration time,MMT)和遞減裝箱虛擬機(jī)放置算法,最終形成一個(gè)優(yōu)化的虛擬機(jī)遷移模型LP-PHSD-MMT-BFD。
云數(shù)據(jù)中心的能量消耗模型及測(cè)試指標(biāo)都參考了最常見(jiàn)的CoMon project,這是由planetlab實(shí)驗(yàn)室開(kāi)發(fā)的一個(gè)項(xiàng)目[15],也是目前很常見(jiàn)的Benchmark項(xiàng)目。物理服務(wù)器配置如表2,虛擬機(jī)的請(qǐng)求個(gè)數(shù)與運(yùn)行時(shí)間如表3。
表2 云數(shù)據(jù)中心物理服務(wù)器硬件配置
表3 LP-PHSD物理主機(jī)狀態(tài)檢測(cè)策略測(cè)試環(huán)境
由于LP-PHSD物理主機(jī)狀態(tài)檢測(cè)算法依托于Cloudsim項(xiàng)目,為此LP-PHSD評(píng)價(jià)的主要指標(biāo)有4個(gè):①云數(shù)據(jù)中心的總體能量消耗;②虛擬機(jī)遷移次數(shù);③SLA違規(guī)比率;④能量消耗及SLA違規(guī)聯(lián)合指標(biāo),這4個(gè)指標(biāo)可以體現(xiàn)與能量消耗相關(guān)的虛擬機(jī)遷移策略的性能好壞。
本文還與近年來(lái)其他物理資源閾值管理辦法進(jìn)行了比較,例如ATEA檢測(cè)方法[4]、AEEVC[16]檢測(cè)方法、穩(wěn)定匹配虛擬機(jī)遷移[17]、虛擬機(jī)關(guān)聯(lián)性虛擬機(jī)遷移[18]、蟻群優(yōu)化的虛擬機(jī)遷移[19]、螢火蟲(chóng)群優(yōu)化的虛擬機(jī)遷移[9]等,分析這些物理主機(jī)狀態(tài)檢測(cè)對(duì)云數(shù)據(jù)中心的性能改變情況。綜上所述,本實(shí)驗(yàn)涉及的虛擬機(jī)遷移模式比較對(duì)象如表4。
表4 LP-PHSD物理主機(jī)狀態(tài)檢測(cè)性能比較對(duì)象
本文虛擬機(jī)遷移比較算法包括LP-PHSD-MMT-BFD,LRR-MMT-BFD,AEEVC,ATEA,Stable-Matching,Correlation-Based,ACS-VMM,GSO-VMM共8種模式。
4.3.1 云數(shù)據(jù)中心總體能量消耗
各個(gè)虛擬機(jī)遷移模型一周之內(nèi)每天24小時(shí)內(nèi)的總體能量消耗如表5。從表5可以看出,有了基于負(fù)載預(yù)測(cè)的LP-PHSD物理主機(jī)狀態(tài)檢測(cè)算法后,LP-PHSD-MMT-BFD遷移模型比Cloudsim中的LRR-MMT-BFD遷移策略在總體能量消耗上要節(jié)約25%~30%,比Stable-Matching策略、Correlation-Based策略、GSO-VMM策略、和ACS-VMM策略的能量消耗也更低,雖然周一到周五之間的數(shù)據(jù)有一定的波動(dòng),但是整體趨勢(shì)是LP-PHSD-MMT-BFD遷移策略最節(jié)省云數(shù)據(jù)中心的能量消耗。分析原因是LP-PHSD 中物理主機(jī)CPU利用率使用閾值邊界是動(dòng)態(tài)調(diào)整的,大部分情況下都可以判斷出源物理主機(jī)和目標(biāo)物理主機(jī)在合適的時(shí)候啟動(dòng)虛擬機(jī)遷移的后續(xù)步驟,能量消耗自然減少,而且LP-PHSD-MMT-BFD中設(shè)計(jì)的能量消耗模型考慮的資源維度更加齊全,比單純一維資源更準(zhǔn)確。
表5 云數(shù)據(jù)中心總體能量消耗性能比較
4.3.2 虛擬機(jī)遷移次數(shù)
表6所示為一周內(nèi)幾種算法的云數(shù)據(jù)中心虛擬機(jī)遷移次數(shù)比較,由表6可知,LP-PHSD-MMT-BFD的虛擬機(jī)遷移次數(shù)都低于LRR-MMT-BFD策略、Stable-Matching策略、Correlation-Based遷移策略、GSO-VMM策略、ACS-VMM策略;而AEEVC策略和ATEA策略遷移次數(shù)則處于中等水平。
表6 云數(shù)據(jù)中心虛擬機(jī)遷移次數(shù)比較
LRR-MMT-BFD很容易增加超負(fù)載或低負(fù)載的物理主機(jī)數(shù)量,增加的虛擬機(jī)遷移間接增加了物理主機(jī)的能量消耗,因?yàn)樘摂M機(jī)遷移過(guò)程也要消耗物理主機(jī)的CPU資源及額外通信開(kāi)銷,而LP-PHSD-MMT-BFD檢測(cè)策略則與LRR-MMT-BFD正好相反,LP-PHSD中都是基于對(duì)物理主機(jī)資源使用效率的預(yù)測(cè)值策略。另外Stable-Matching策略、Correlation-Based策略和ACS-VMM策略的優(yōu)化主要在虛擬機(jī)放置階段,很難降低虛擬機(jī)遷移次數(shù),要減少虛擬機(jī)遷移次數(shù),必須在虛擬機(jī)選擇階段與物理主機(jī)狀態(tài)檢測(cè)階段完成優(yōu)化。
4.3.3 SLA違規(guī)率分析
表7為各類虛擬機(jī)遷移策略的SLA違規(guī)率比較,從表7可以看出,周一到周五,LP-PHSD-MMT-BFD遷移策略的SLA違規(guī)率比LRR-MMT-BFD遷移策略要低,原因是LP-PHSD-MMT-BFD周期性完成超負(fù)載物理主機(jī)檢測(cè),可以避免物理主機(jī)出現(xiàn)100%的CPU利用率機(jī)會(huì),從 (12) 式可以得到SLA違規(guī)比率會(huì)降低。Stable-Matching策略、Correlation-Based策略和ACS-VMM策略在虛擬機(jī)放置階段都采用另外的優(yōu)化算法,這樣整個(gè)云數(shù)據(jù)中心的SLA違規(guī)率自然會(huì)比LRR-MMT-BFD遷移策略要低,他們的SLA違規(guī)率在某些時(shí)候還優(yōu)于LP-PHSD-MMT-BFD策略,AEEVC策略和ATEA策略則處于性能中等水平。GSO-VMM策略和本文的模型在SLA違規(guī)率上性能基本相同,比Cloudsim的原始遷移策略SLA違規(guī)率更低。
表7 各類虛擬機(jī)遷移策略的SLA違規(guī)率比較
4.3.4 能量與SLA違規(guī)的聯(lián)合指標(biāo)ESV
表8為各類虛擬機(jī)遷移的ESV聯(lián)合指標(biāo),從表8可以看到,LP-PHSD-MMT-BFD遷移策略的ESV也要低于LRR-MMT-BFD遷移策略。這表明了在第1階段物理主機(jī)狀態(tài)檢測(cè)過(guò)程中,算法優(yōu)化對(duì)云數(shù)據(jù)中心的物理資源利用效率提高的重要性。AEEVC策略、ATEA策略、Stable-Matching策略、Correlation-Based策略和ACS-VMM策略是2016至2018年提出的虛擬機(jī)遷移優(yōu)化算法,他們?cè)谔摂M機(jī)遷移的各個(gè)階段都有優(yōu)化,比2012年的LRR-MMT-BFD遷移策略性能優(yōu)秀,而且蟻群優(yōu)化虛擬機(jī)遷移策略的ESV甚至超過(guò)了LP-PHSD-MMT-BFD策略。
表8 各類虛擬機(jī)遷移的聯(lián)合指標(biāo)ESV
本文提出了基于負(fù)載預(yù)測(cè)的物理主機(jī)狀態(tài)檢測(cè)方法LP-PHSD,這是一種主動(dòng)檢測(cè)方法,采用基于時(shí)間序列的二次指數(shù)平滑法來(lái)預(yù)測(cè)物理主機(jī)在未來(lái)一段時(shí)間內(nèi)的CPU資源使用率情況,同時(shí),結(jié)合絕對(duì)中位差方法確定資源的動(dòng)態(tài)閾值邊界,通過(guò)源主機(jī)和目標(biāo)主機(jī)2個(gè)檢測(cè)算法來(lái)確定虛擬機(jī)遷移的時(shí)刻。實(shí)驗(yàn)結(jié)果表明,經(jīng)過(guò)LP-PHSD優(yōu)化過(guò)的虛擬機(jī)遷移策略LP-PHSD-MMT-BFD大部分情況下比常見(jiàn)的其他虛擬機(jī)遷移模式有更低的能量消耗和更少的虛擬機(jī)遷移次數(shù),服務(wù)質(zhì)量明顯提高。LP-PHSD物理主機(jī)狀態(tài)檢測(cè)策略可以為其他云服務(wù)器提供商構(gòu)造節(jié)能綠色云數(shù)據(jù)中心提供支持。