王 晶 何利力(浙江理工大學(xué)信息學(xué)院 浙江 杭州 310018)
云數(shù)據(jù)中心利用虛擬化技術(shù)將軟硬件資源池化,動(dòng)態(tài)調(diào)整資源,按用戶需求提供資源服務(wù),但隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,用戶需求日益增長,這要求數(shù)據(jù)中心運(yùn)營應(yīng)低成本、高效率,而數(shù)據(jù)中心核心問題是資源利用率問題[1]。虛擬機(jī)動(dòng)態(tài)遷移技術(shù)是解決數(shù)據(jù)中心資源利用率問題的有效解決方法,其在提供有效服務(wù)的情況下通過對節(jié)點(diǎn)負(fù)載進(jìn)行調(diào)整,以達(dá)到平臺(tái)資源的高利用率、負(fù)載均衡、節(jié)能優(yōu)化和低SLA違約率等目的[2]。虛擬機(jī)動(dòng)態(tài)遷移可以分為三個(gè)部分:遷移觸發(fā)時(shí)機(jī)、待遷移虛擬機(jī)選擇和目的節(jié)點(diǎn)的選擇。遷移觸發(fā)時(shí)機(jī)作為虛擬機(jī)動(dòng)態(tài)遷移策略必須要考慮的三個(gè)問題之首,顯得尤為重要[3]。
遷移觸發(fā)時(shí)機(jī)策略,即通過節(jié)點(diǎn)負(fù)載情況判斷是否需要對其上運(yùn)行的虛擬機(jī)進(jìn)行遷移操作,共包括兩個(gè)部分:監(jiān)控節(jié)點(diǎn)負(fù)載信息與遷移時(shí)機(jī)判斷,其中核心部分是對觸發(fā)時(shí)機(jī)的判斷方法[4]。
節(jié)點(diǎn)負(fù)載信息的收集方式及內(nèi)容是進(jìn)行負(fù)載狀態(tài)評(píng)估的基礎(chǔ)。文獻(xiàn)[5-6]通過實(shí)時(shí)采集服務(wù)器資源使用情況,并使用閾值法對服務(wù)器狀態(tài)進(jìn)行判斷,由于獲取實(shí)時(shí)數(shù)據(jù)需頻繁采集服務(wù)器負(fù)載信息,這會(huì)占用大量資源;文獻(xiàn)[7]減少采集信息的頻率,并使用指數(shù)平滑預(yù)測未來幾期的CPU使用率,有效減少了由采集信息帶來的資源消耗,但是單一負(fù)載指標(biāo)并不能有效地代表異構(gòu)節(jié)點(diǎn)的負(fù)載情況。文獻(xiàn)[8-9]對阿里集群2018年最新集群公開數(shù)據(jù)進(jìn)行研究,結(jié)果表明,在阿里異構(gòu)集群中,服務(wù)器的CPU、內(nèi)存、磁盤等資源都影響著服務(wù)器的負(fù)載狀態(tài)。文獻(xiàn)[10]將服務(wù)器過載類型依據(jù)過載資源類型分為高CPU型過載、高內(nèi)存型過載與高帶寬型過載,在判斷過載時(shí)使用負(fù)載預(yù)測對未來幾期內(nèi)的負(fù)載進(jìn)行預(yù)測,從而增加了負(fù)載狀態(tài)判斷的合理性。
虛擬機(jī)觸發(fā)時(shí)機(jī)的判斷方法的有效性決定了虛擬機(jī)遷移觸發(fā)時(shí)機(jī)的合理性,通常使用閾值法對負(fù)載狀態(tài)進(jìn)行判斷,但是由于虛擬機(jī)遷移任務(wù)到達(dá)會(huì)導(dǎo)致節(jié)點(diǎn)負(fù)載出現(xiàn)瞬時(shí)的抖動(dòng),即負(fù)載瞬時(shí)值,此值影響觸發(fā)時(shí)機(jī)的合理性,進(jìn)而影響虛擬機(jī)遷移的效果。
文獻(xiàn)[11]設(shè)定觀察周期,當(dāng)負(fù)載值連續(xù)多次超過閾值時(shí),觸發(fā)虛擬機(jī)遷移,此方法雖可以減少由負(fù)載瞬時(shí)值引起的不必要的遷移,但是具有嚴(yán)重的滯后性,并影響數(shù)據(jù)中心的服務(wù)質(zhì)量。文獻(xiàn)[12]使用CPU、內(nèi)存和帶寬三維度負(fù)載指標(biāo),考慮各指標(biāo)可用范圍設(shè)置雙閾值實(shí)現(xiàn)遷移時(shí)機(jī)的判斷,通過預(yù)測閾值動(dòng)態(tài)可調(diào)范圍減少負(fù)載瞬時(shí)值的影響,但此方法并未考慮到全局負(fù)載量的變化,且未提供服務(wù)器輕度負(fù)載的判斷方法。文獻(xiàn)[13]使用混合負(fù)載預(yù)測法對未來負(fù)載進(jìn)行預(yù)測,進(jìn)而減緩瞬時(shí)負(fù)載值的影響,增加觸發(fā)時(shí)機(jī)的合理性,但是混合預(yù)測法算法復(fù)雜,且計(jì)算過程是在全局檢測模塊中進(jìn)行的,當(dāng)進(jìn)行大批量的服務(wù)器負(fù)載的分析時(shí),全局檢測模塊需消耗大量計(jì)算資源,可能會(huì)影響其他進(jìn)程的執(zhí)行效率。文獻(xiàn)[14]針對異構(gòu)節(jié)點(diǎn)的配置差異,在節(jié)點(diǎn)內(nèi)監(jiān)測負(fù)載信息并使用IFTS預(yù)測節(jié)點(diǎn)負(fù)載,以每個(gè)節(jié)點(diǎn)的負(fù)載均衡得到整個(gè)系統(tǒng)的負(fù)載均衡,但是文獻(xiàn)中的IFTS節(jié)點(diǎn)預(yù)測模型具有一定復(fù)雜度,占用了一定的節(jié)點(diǎn)計(jì)算資源,從節(jié)點(diǎn)效率考慮,在虛擬機(jī)遷移觸發(fā)時(shí)機(jī)的合理性前提下,節(jié)點(diǎn)用于監(jiān)測與預(yù)測的計(jì)算資源應(yīng)越少越好。
針對以上問題,本文設(shè)計(jì)一種基于節(jié)點(diǎn)負(fù)載狀態(tài)評(píng)估和動(dòng)態(tài)閾值的虛擬機(jī)遷移觸發(fā)策略(NLADT-MMT)。選取三維度的負(fù)載指標(biāo)并將負(fù)載狀態(tài)評(píng)估置于節(jié)點(diǎn)管理中,由節(jié)點(diǎn)監(jiān)測模塊負(fù)責(zé)收集該節(jié)點(diǎn)負(fù)載信息結(jié)合負(fù)載預(yù)測實(shí)現(xiàn)對該節(jié)點(diǎn)的負(fù)載狀態(tài)評(píng)估;全局監(jiān)測模塊負(fù)責(zé)收集所有節(jié)點(diǎn)的負(fù)載狀態(tài)信息,通過監(jiān)測全局負(fù)載度和高低負(fù)載節(jié)點(diǎn)比率動(dòng)態(tài)調(diào)整閾值。
針對異構(gòu)節(jié)點(diǎn)資源配置差異和現(xiàn)有的遷移觸發(fā)機(jī)制存在的問題,本文設(shè)計(jì)基于節(jié)點(diǎn)負(fù)載狀態(tài)評(píng)估和動(dòng)態(tài)閾值的虛擬機(jī)遷移觸發(fā)策略,如圖1所示,該策略包括兩個(gè)部分,節(jié)點(diǎn)檢測模塊和全局檢測模塊。
圖1 虛擬機(jī)遷移觸發(fā)策略
各模塊功能如圖1所示,節(jié)點(diǎn)監(jiān)測模塊負(fù)責(zé)對節(jié)點(diǎn)負(fù)載狀態(tài)進(jìn)行評(píng)估,并主動(dòng)將需進(jìn)行遷移的節(jié)點(diǎn)信息發(fā)送給全局監(jiān)控模塊;全局監(jiān)控模塊負(fù)責(zé)狀態(tài)閾值的動(dòng)態(tài)調(diào)整,并接收節(jié)點(diǎn)負(fù)載信息,通過對全局負(fù)載度與高低負(fù)載節(jié)點(diǎn)占比進(jìn)行監(jiān)控,判斷是否需要進(jìn)行閾值調(diào)整,若需要?jiǎng)t調(diào)整閾值并更新狀態(tài)閾值,將新的閾值發(fā)送給各個(gè)節(jié)點(diǎn)。
該策略將負(fù)載評(píng)估部分放置于各個(gè)節(jié)點(diǎn)中,針對各個(gè)節(jié)點(diǎn)的配置差異設(shè)定狀態(tài)閾值,可以節(jié)約全局檢測模塊的計(jì)算資源,且在規(guī)模較大時(shí),可以獲得更佳的服務(wù)質(zhì)量。虛擬機(jī)遷移觸發(fā)策略即確定需進(jìn)行虛擬機(jī)遷移的節(jié)點(diǎn)列表,其過程可以用定義1表示。
定義1設(shè)數(shù)據(jù)中心有n個(gè)節(jié)點(diǎn),節(jié)點(diǎn)集合為Node={N1,N2,…,Nn};虛擬機(jī)遷移時(shí)機(jī)觸發(fā)策略便是通過節(jié)點(diǎn)負(fù)載狀態(tài)評(píng)估,篩選出需進(jìn)行虛擬機(jī)遷移操作的源節(jié)點(diǎn)集合S={s1,s2,…,sm},遷移觸發(fā)過程可以描述如下:
(1)
定義2節(jié)點(diǎn)負(fù)載狀態(tài)通過閾值法進(jìn)行劃分,包括輕載、適載和重載狀態(tài)。負(fù)載超過高位閾值trh為重載;負(fù)載低于低位閾值trl為輕載;負(fù)載位于兩個(gè)閾值之間為適載。
tri={trh,trl|trh,trl∈(0,1)}
(2)
(3)
節(jié)點(diǎn)的負(fù)載狀態(tài)決定了節(jié)點(diǎn)可承接的任務(wù)量及虛擬機(jī)數(shù)量,由于云數(shù)據(jù)中心中負(fù)載通常具有隨機(jī)性、突變性與規(guī)律性[8-9]的特點(diǎn),為了減少頻繁獲取節(jié)點(diǎn)實(shí)時(shí)負(fù)載信息的資源消耗與負(fù)載瞬時(shí)值對評(píng)估結(jié)果有效性的影響,本文使用狀態(tài)閾值法對節(jié)點(diǎn)負(fù)載進(jìn)行評(píng)估,并采用負(fù)載預(yù)測,以獲得短時(shí)間內(nèi)的未來負(fù)載值,減少采集信息的資源消耗,并降低負(fù)載瞬時(shí)值的影響。
2.2.1節(jié)點(diǎn)負(fù)載預(yù)測模型
本文將節(jié)點(diǎn)負(fù)載評(píng)估置于節(jié)點(diǎn)中,考慮到節(jié)點(diǎn)效益問題,節(jié)點(diǎn)預(yù)測模型應(yīng)滿足在占用較少的計(jì)算資源和易實(shí)現(xiàn)的前提下獲得顯著的預(yù)測效果。
常用的簡單的短期預(yù)測模型包括自回歸移動(dòng)平均模型(RAMA)、自回歸模型(RA)、指數(shù)平滑模型(ES)、移動(dòng)平均模型(MA),其中RAMA效果最好,但是計(jì)算量及復(fù)雜度最高,其次ES效果最顯著,且復(fù)雜度及計(jì)算量較低[15]。一次指數(shù)平滑法適合趨勢較為平緩的時(shí)間序列預(yù)測[5],二次指數(shù)平滑法適合線性時(shí)間序列預(yù)測,三次指數(shù)平滑法(CES)適合非線性拋物線趨勢時(shí)間序列預(yù)測[16]。由于負(fù)載時(shí)間序列是非線性的,故本文選取CES預(yù)測模型,但是CES具有滯后性,文獻(xiàn)[17]采用分形插值法改進(jìn)CES模型,并獲得較好的交通預(yù)測效果。故本文選取三次指數(shù)平滑法,并使用插值法解決滯后性問題,加入誤差修正減少峰谷值處誤差。建立預(yù)測模型如圖2所示,其中α為平滑因子。
圖2 改進(jìn)三次指數(shù)平滑法的負(fù)載預(yù)測模型
1) 插值預(yù)處理。第m期的預(yù)測值為:
Yt+m=At+Btm+Ctm2
(4)
式中:At、Bt、Ct為第t期預(yù)測參數(shù)。
(5)
對平滑因子α進(jìn)行迭代,將處理后的負(fù)載序列進(jìn)行三次平滑,得到m期的預(yù)測擬合曲線Yt+m,并通過計(jì)算實(shí)際值之差與預(yù)測誤差的相關(guān)性,尋找最相關(guān)平滑因子αh。
2) 誤差修正。根據(jù)已知t期的負(fù)載數(shù)據(jù),計(jì)算預(yù)測點(diǎn)處與實(shí)際值的誤差,并進(jìn)行曲線擬合,計(jì)算處誤差曲線。根據(jù)實(shí)驗(yàn)發(fā)現(xiàn),第i期與第i-1期的差值與i點(diǎn)處實(shí)際值和預(yù)測值呈現(xiàn)相關(guān)性,故使用多項(xiàng)式擬合的方法,尋找誤差修正公式。通過曲線擬合,確定a、b、c、d的值,從而得到誤差表達(dá)式如下:
Res(m)=am3+bm2+cm+d
(6)
(7)
最終預(yù)測模型如下:
Yt+m=At+Btm+Ctm2+Res(m)
(8)
2.2.2節(jié)點(diǎn)負(fù)載狀態(tài)評(píng)估
1) 初始化資源權(quán)重。節(jié)點(diǎn)i的負(fù)載指標(biāo)權(quán)重為Ki=[k1k2k3],其中k1+k2+k3=1,該資源資源配置與標(biāo)準(zhǔn)節(jié)點(diǎn)資源配置比即為負(fù)載指標(biāo)權(quán)重比:
(9)
由此求得Ki,可計(jì)算節(jié)點(diǎn)負(fù)載度Li。
(10)
2) 初始化狀態(tài)閾值。在節(jié)點(diǎn)負(fù)載評(píng)估時(shí),需根據(jù)該節(jié)點(diǎn)資源配置對此值進(jìn)行初始化得到節(jié)點(diǎn)狀態(tài)閾值thi,其中trl=Thl,設(shè)τtype為type資源指標(biāo)調(diào)節(jié)比例常數(shù),則節(jié)點(diǎn)i的type資源指標(biāo)的高位閾值計(jì)算公式如下:
(11)
為了減少異構(gòu)節(jié)點(diǎn)中負(fù)載瞬時(shí)值的影響并提高負(fù)載狀態(tài)評(píng)估的合理性,本文設(shè)計(jì)基于負(fù)載預(yù)測的節(jié)點(diǎn)負(fù)載評(píng)估算法,算法流程如下:
Step1根據(jù)收集到的負(fù)載指標(biāo)向量Ui組成節(jié)點(diǎn)負(fù)載狀態(tài)向量si,令Sti=0為初始值。
Step2分別進(jìn)行各指標(biāo)過載判斷,若負(fù)載指標(biāo)均未大于該指標(biāo)閾值則轉(zhuǎn)至Step 4;若負(fù)載指標(biāo)大于該指標(biāo)閾值且滿足以下條件之一便開啟負(fù)載預(yù)測。若不滿足以下任一條件則轉(zhuǎn)Step 6。負(fù)載指標(biāo)預(yù)測開啟條件:(1) 上期數(shù)據(jù)與本期數(shù)據(jù)皆大于該指標(biāo)的高位閾值;(2) 兩期數(shù)據(jù)呈現(xiàn)增長趨勢。
Step3進(jìn)行負(fù)載指標(biāo)預(yù)測,若預(yù)測周期內(nèi)預(yù)測值均大于該指標(biāo)閾值,則該節(jié)點(diǎn)為該指標(biāo)類型過載,更新S值;跳轉(zhuǎn)至Step 6。
Step4計(jì)算節(jié)點(diǎn)負(fù)載度,若此值大于低位閾值轉(zhuǎn)至Step 6;若此值小于低位閾值且滿足以下條件之一便開啟負(fù)載預(yù)測。若不滿足以下任一條件則轉(zhuǎn)Step 6。負(fù)載度預(yù)測開啟條件:(1) 上期值與本期值皆小于低位閾值;(2) 兩期數(shù)據(jù)呈現(xiàn)下降趨勢。
Step5進(jìn)行負(fù)載度預(yù)測,若預(yù)測周期內(nèi)預(yù)測值均小于低位閾值,則該節(jié)點(diǎn)輕載,更新Sti=4;轉(zhuǎn)至Step 6。
Step6最終節(jié)點(diǎn)監(jiān)測模塊將更新后的si主動(dòng)發(fā)送至全局監(jiān)測模塊。
算法流程如圖3所示。
圖3 節(jié)點(diǎn)的負(fù)載狀態(tài)評(píng)估算法流程
此節(jié)點(diǎn)負(fù)載評(píng)估算法根據(jù)節(jié)點(diǎn)配置設(shè)置狀態(tài)閾值,采用負(fù)載預(yù)測減少負(fù)載瞬時(shí)值的影響,但是狀態(tài)閾值不能根據(jù)數(shù)據(jù)中心負(fù)載狀況進(jìn)行調(diào)整,故存在靈活性差問題。
狀態(tài)閾值是遷移時(shí)機(jī)判決算法中的評(píng)判標(biāo)準(zhǔn),針對靜態(tài)閾值的適應(yīng)性差和靈活度低問題,本文設(shè)計(jì)一種閾值動(dòng)態(tài)調(diào)整方法,通過分析數(shù)據(jù)中心負(fù)載度、高負(fù)載比率和低負(fù)載比率對閾值進(jìn)行動(dòng)態(tài)調(diào)控。
1) 全局負(fù)載度。全局負(fù)載度可以用來監(jiān)控?cái)?shù)據(jù)中心整體負(fù)載情況。當(dāng)全局負(fù)載度過高時(shí),數(shù)據(jù)中心整體接收大量的負(fù)載任務(wù),此時(shí)開放更多資源以承接負(fù)載任務(wù);當(dāng)全局負(fù)載度過低時(shí),數(shù)據(jù)中心的負(fù)載任務(wù)減少,此時(shí)縮減可用資源范圍,以節(jié)約資源。全局負(fù)載度計(jì)算方法如下。
取t時(shí)段內(nèi)的負(fù)載信息并計(jì)算每個(gè)時(shí)刻內(nèi)數(shù)據(jù)中心節(jié)點(diǎn)平均負(fù)載度,即:
(12)
得到全局負(fù)載度集合為{d1,d2,…,dt};剔除集合中的孤立點(diǎn)后集合為{d1,d2,…,dm},采用權(quán)重法計(jì)算全局負(fù)載度,如下:
(13)
(14)
為了保持?jǐn)?shù)據(jù)中心的負(fù)載度,根據(jù)歷史信息,按時(shí)間段為數(shù)據(jù)中心設(shè)置負(fù)載范圍(ω1,ω2),當(dāng)數(shù)據(jù)中心負(fù)載不在設(shè)定的范圍內(nèi)時(shí),進(jìn)行是否進(jìn)行閾值調(diào)整的分析。
2) 高低負(fù)載節(jié)點(diǎn)比率。高低負(fù)載節(jié)點(diǎn)比率表現(xiàn)出數(shù)據(jù)中心節(jié)點(diǎn)利用率情況。當(dāng)高負(fù)載節(jié)點(diǎn)數(shù)量過多時(shí),會(huì)多次觸發(fā)遷移操作,造成虛擬機(jī)頻繁遷移,耗費(fèi)大量資源;低負(fù)載節(jié)點(diǎn)比率過多時(shí),此時(shí)數(shù)據(jù)中心過多節(jié)點(diǎn)資源處于未充分利用狀態(tài),造成資源浪費(fèi)與成本消耗。設(shè)高負(fù)載比率、低負(fù)載比率分別為Lrh和Lrl,在t時(shí)間段內(nèi),計(jì)算公式如下:
(15)
設(shè)置高負(fù)載比率范圍(minLrh,maxLrh)與低負(fù)載比率范圍(minLrl,maxLrl)以判斷是否進(jìn)行閾值調(diào)整。
3) 閾值動(dòng)態(tài)調(diào)整流程。通過全局負(fù)載度與高低負(fù)載節(jié)點(diǎn)比率實(shí)現(xiàn)對狀態(tài)閾值的動(dòng)態(tài)調(diào)控,流程如下:
(1) 計(jì)算t時(shí)段內(nèi)全局負(fù)載度D,若D∈(ω1,ω2)則數(shù)據(jù)中心在適度負(fù)載內(nèi),不需要調(diào)整閾值;否則轉(zhuǎn)步驟(2)。
(2) 計(jì)算高低負(fù)載節(jié)點(diǎn),計(jì)算其占比Lrh和Lrl;分別比較其是否在設(shè)定的范圍內(nèi),若不在此范圍則轉(zhuǎn)步驟(3);否則需要進(jìn)行閾值調(diào)整,調(diào)整方式如下:
(16)
(3) 若D>ωl且Lrh>maxLrh時(shí),則數(shù)據(jù)中心接受大量負(fù)載,此時(shí)需要啟用新的節(jié)點(diǎn)服務(wù)器;若當(dāng)D<ωl且Lrl>maxLrl時(shí),則數(shù)據(jù)中心大量資源未被使用,此時(shí)需要關(guān)閉一些節(jié)點(diǎn)服務(wù)器,節(jié)約成本消耗。
基于以上研究,將動(dòng)態(tài)閾值調(diào)整方法與節(jié)點(diǎn)負(fù)載評(píng)估方法進(jìn)行整合,得到如圖4所示的遷移時(shí)機(jī)判決算法。
圖4 遷移時(shí)機(jī)判決算法流程
由全局監(jiān)測模塊對數(shù)據(jù)中心負(fù)載進(jìn)行監(jiān)控,一旦全局負(fù)載度超過指定范圍或高低負(fù)載節(jié)點(diǎn)比率過高即開啟閾值的動(dòng)態(tài)調(diào)控,并將更新后的閾值發(fā)送至各個(gè)節(jié)點(diǎn)中,由節(jié)點(diǎn)根據(jù)自身配置信息設(shè)置狀態(tài)閾值,用于節(jié)點(diǎn)負(fù)載狀態(tài)評(píng)估中;節(jié)點(diǎn)負(fù)載狀態(tài)評(píng)估完成后,將負(fù)載狀態(tài)向量發(fā)送至全局監(jiān)測模塊,由全局監(jiān)測模塊組成節(jié)點(diǎn)負(fù)載狀態(tài)矩陣并發(fā)送遷移請求。
為了評(píng)估本文遷移觸發(fā)策略(NLADT-MMT)的優(yōu)越性,采用CloudSim仿真平臺(tái)進(jìn)行仿真驗(yàn)證。分別進(jìn)行2組實(shí)驗(yàn),一組選取50臺(tái)異構(gòu)物理主機(jī)作為物理節(jié)點(diǎn)的小型數(shù)據(jù)中心,另一組選取1 000臺(tái)異構(gòu)物理主機(jī)作為物理節(jié)點(diǎn)的大型數(shù)據(jù)中心,每臺(tái)主機(jī)上分別配置3至5個(gè)不同個(gè)數(shù)的虛擬機(jī),則實(shí)驗(yàn)環(huán)境配置如表1所示。
本文實(shí)驗(yàn)的虛擬機(jī)遷移調(diào)度策略均使用虛擬機(jī)最小遷移策略(Minimum Migration,MM)。使用文獻(xiàn)[5]中的虛擬機(jī)遷移框架(即將本文負(fù)載評(píng)估和預(yù)測均放置在全局監(jiān)控模塊中)作為本文比對策略,包括2組比對對象,使用靜態(tài)閾值和負(fù)載預(yù)測判斷時(shí)機(jī)的策略(STLP-MMT)和使用動(dòng)態(tài)閾值和負(fù)載預(yù)測判斷時(shí)機(jī)的策略(DTLP-MMT)。實(shí)驗(yàn)參數(shù)如表2所示。
表2 實(shí)驗(yàn)參數(shù)配置表
1) 節(jié)點(diǎn)負(fù)載預(yù)測誤差。節(jié)點(diǎn)負(fù)載預(yù)測誤差采用平均絕對誤差(MAE)和均方誤差(MSE)作為評(píng)價(jià)標(biāo)準(zhǔn)。
2) 虛擬機(jī)遷移次數(shù)。合理有效的遷移時(shí)機(jī)判決可以減少虛擬機(jī)的遷移次數(shù),所以本文將虛擬機(jī)遷移次數(shù)作為評(píng)價(jià)標(biāo)準(zhǔn)。
3) 平均SLA違約率。用戶服務(wù)質(zhì)量水平的高低通常用平均SLA違背率來評(píng)價(jià),該值越低則表示用戶服務(wù)質(zhì)量越高。本文采用文獻(xiàn)[12]中提供的多維度平均SLA違約率計(jì)算方法,即:
(17)
為了驗(yàn)證本文設(shè)計(jì)的虛擬機(jī)遷移觸發(fā)策略(NLADT-MMT)適用于異構(gòu)節(jié)點(diǎn)并可以有效減少由于瞬時(shí)峰值造成的虛擬機(jī)遷移,本文將實(shí)驗(yàn)分析分為兩個(gè)部分,第一部分為節(jié)點(diǎn)的負(fù)載評(píng)估,包括節(jié)點(diǎn)負(fù)載預(yù)測的有效性以及節(jié)點(diǎn)狀態(tài)評(píng)估的有效性分析;第二部分為遷移觸發(fā)時(shí)機(jī)策略下,虛擬機(jī)遷移次數(shù)和SLA違約率的分析。
1) 節(jié)點(diǎn)負(fù)載評(píng)估有效性分析。實(shí)驗(yàn)中對節(jié)點(diǎn)CPU、內(nèi)存和帶寬利用率進(jìn)行監(jiān)控,由于實(shí)驗(yàn)分析過程相似,故取CPU利用率為例。實(shí)驗(yàn)中每隔100 s收集一次節(jié)點(diǎn)資源使用信息。為了比較改進(jìn)的預(yù)測模型的有效性,共選取10個(gè)節(jié)點(diǎn)的CPU真實(shí)值和預(yù)測值,對其進(jìn)行誤差分析,以比較改進(jìn)預(yù)測模型的有效性。MAE與MSE誤差比較圖如圖5所示。
(a) CPU利用率預(yù)測MAE
改進(jìn)算法可以有效減小預(yù)測的誤差值,其MAE保持在0.2左右,且趨勢平坦,相對未改進(jìn)前的CES預(yù)測模型,預(yù)測值的MAE減少了0.68;其MSE保持在0.08左右,趨勢也較為平坦,對比CSE,預(yù)測值的MSE減少了0.71。綜上,改進(jìn)算法預(yù)測可以大幅度提升預(yù)測精度,具有一定的穩(wěn)定性。
為了驗(yàn)證基于負(fù)載預(yù)測的節(jié)點(diǎn)負(fù)載評(píng)估算法可以有效降低負(fù)載瞬時(shí)峰值的影響,將使用負(fù)載預(yù)測的載狀態(tài)評(píng)估算法與未使用負(fù)載預(yù)測的載狀態(tài)評(píng)估算法進(jìn)行比較分析,如圖8所示。其中CPU-NP、CPU-P、RAM-NP、RAM-P、BAND-NP、BAND-P分別表示沒有使用預(yù)測機(jī)制CPU利用率算法的觸發(fā)次數(shù)、使用預(yù)測機(jī)制的CPU利用率算法的觸發(fā)次數(shù)、沒有使用預(yù)測機(jī)制內(nèi)存利用率算法的觸發(fā)次數(shù)、使用預(yù)測機(jī)制內(nèi)存利用率算法的觸發(fā)次數(shù)、沒有使用預(yù)測機(jī)制帶寬利用率算法的觸發(fā)次數(shù)、使用預(yù)測機(jī)制的帶寬利用率算法的觸發(fā)次數(shù)。
共選取了6組對比實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析,針對負(fù)載較小、負(fù)載居中、負(fù)載較大的三種情況分別選取了兩組數(shù)據(jù)。從圖6可以看出,在六組數(shù)據(jù)中,基于節(jié)點(diǎn)預(yù)測的觸發(fā)策略在觸發(fā)次數(shù)方面均不同程度地低于沒有負(fù)載預(yù)測的觸發(fā)策略。由此可見,通過節(jié)點(diǎn)預(yù)測可以有效減少虛擬機(jī)觸發(fā)次數(shù)。
圖6 觸發(fā)次數(shù)比較
2) 遷移觸發(fā)時(shí)機(jī)綜合分析。遷移觸發(fā)的綜合分析包括虛擬機(jī)遷移次數(shù)和SLA違約率。研究使用STLP-MMT、DTLP-MMT和NLADT-MMT的虛擬機(jī)遷移策略在不同數(shù)量節(jié)點(diǎn)下的遷移次數(shù),實(shí)驗(yàn)對比結(jié)果如圖7所示。
可以看出,STLP-MMT的變化趨勢起伏波動(dòng)最大,DTLP-MMT與NLADT-MMT的變化趨勢平緩。由此可見,根據(jù)數(shù)據(jù)中心整體負(fù)載變化動(dòng)態(tài)設(shè)定狀態(tài)閾值可以有效減少虛擬機(jī)遷移次數(shù)和大批量的遷移操作,可以在一定程度上避免由于數(shù)據(jù)中心高負(fù)載情況下可用資源不足造成的虛擬機(jī)遷移。在節(jié)點(diǎn)數(shù)量多的實(shí)驗(yàn)中,NLADT-MMT的優(yōu)勢得以顯現(xiàn)出來,由各個(gè)節(jié)點(diǎn)承擔(dān)負(fù)載狀態(tài)評(píng)估可以有效減少遷移時(shí)機(jī)觸發(fā)的延時(shí)性,減少全局檢測模塊的負(fù)載。全局檢測模塊中的資源一旦超載,其工作效率下降,則SLA違約率上升,影響數(shù)據(jù)中心的服務(wù)的質(zhì)量。不同規(guī)格的數(shù)據(jù)中心下不同觸發(fā)策略的平均SLA違反率實(shí)驗(yàn)對比如圖8所示。
(a) 小規(guī)模數(shù)據(jù)中心
(b) 大規(guī)模數(shù)據(jù)中心圖8 不同規(guī)格的數(shù)據(jù)中心下的平均SLA違反率比較
隨著時(shí)間推移,數(shù)據(jù)中心任務(wù)不斷增多,剩余可用資源減少,STLP-MMT使用的靜態(tài)閾值無法根據(jù)需要調(diào)節(jié)數(shù)據(jù)中心可用資源量,其平均SLA違反率逐漸上升。而使用了動(dòng)態(tài)閾值的DTLP-MMT和NLADT-MMT的平均SLA違反率相對較低,對比圖8(a)和(b),可知在規(guī)模較大的數(shù)據(jù)中心中NLADT-MMT的平均SLA違反率最低。由此可見,動(dòng)態(tài)閾值可以改善數(shù)據(jù)中心服務(wù)質(zhì)量,在大規(guī)模數(shù)據(jù)中心中,將負(fù)載狀態(tài)評(píng)估放置在各個(gè)節(jié)點(diǎn)中的NLADT-MMT可以提供更好的服務(wù)質(zhì)量。
綜上所述,在大規(guī)模含有異構(gòu)節(jié)點(diǎn)的數(shù)據(jù)中心中,NLADT-MMT可以有效避免由于負(fù)載瞬時(shí)值導(dǎo)致的遷移時(shí)機(jī)判斷不合理問題,可以有效減少遷移觸發(fā)次數(shù)和SLA違約率,提高數(shù)據(jù)中心資源利用率。
本文針對數(shù)據(jù)中心異構(gòu)節(jié)點(diǎn)設(shè)計(jì)一種基于節(jié)點(diǎn)負(fù)載評(píng)估和動(dòng)態(tài)閾值的虛擬機(jī)遷移觸發(fā)策略。將負(fù)載狀態(tài)評(píng)估放置在各個(gè)節(jié)點(diǎn)管理中,由全局監(jiān)測模塊控制動(dòng)態(tài)閾值并主動(dòng)發(fā)送至各個(gè)節(jié)點(diǎn)中用以判斷節(jié)點(diǎn)負(fù)載狀態(tài)。實(shí)驗(yàn)結(jié)果表明本文提出的負(fù)載評(píng)估模型可以由于大規(guī)模數(shù)據(jù)中心有效地對節(jié)點(diǎn)負(fù)載進(jìn)行預(yù)測,減少負(fù)載瞬時(shí)值對遷移時(shí)機(jī)的影響;基于動(dòng)態(tài)閾值的遷移判決算法從全局負(fù)載角度動(dòng)態(tài)調(diào)節(jié)閾值,有效調(diào)節(jié)全局負(fù)載和高低負(fù)載節(jié)點(diǎn)占比率,降低SLA違約率。但要解決數(shù)據(jù)中心負(fù)載及資源利用率的問題,僅僅研究遷移時(shí)機(jī)是遠(yuǎn)遠(yuǎn)不夠的,調(diào)度算法對于解決數(shù)據(jù)中心存在的問題也至關(guān)重要。所以本文的后續(xù)工作是在此遷移時(shí)機(jī)判斷策略的基礎(chǔ)上,研究虛擬機(jī)調(diào)度策略,以提高數(shù)據(jù)中心資源利用率和優(yōu)化負(fù)載均衡。