王 晶 何利力(浙江理工大學信息學院 浙江 杭州 310018)
云數據中心利用虛擬化技術將軟硬件資源池化,動態(tài)調整資源,按用戶需求提供資源服務,但隨著互聯網技術的快速發(fā)展,用戶需求日益增長,這要求數據中心運營應低成本、高效率,而數據中心核心問題是資源利用率問題[1]。虛擬機動態(tài)遷移技術是解決數據中心資源利用率問題的有效解決方法,其在提供有效服務的情況下通過對節(jié)點負載進行調整,以達到平臺資源的高利用率、負載均衡、節(jié)能優(yōu)化和低SLA違約率等目的[2]。虛擬機動態(tài)遷移可以分為三個部分:遷移觸發(fā)時機、待遷移虛擬機選擇和目的節(jié)點的選擇。遷移觸發(fā)時機作為虛擬機動態(tài)遷移策略必須要考慮的三個問題之首,顯得尤為重要[3]。
遷移觸發(fā)時機策略,即通過節(jié)點負載情況判斷是否需要對其上運行的虛擬機進行遷移操作,共包括兩個部分:監(jiān)控節(jié)點負載信息與遷移時機判斷,其中核心部分是對觸發(fā)時機的判斷方法[4]。
節(jié)點負載信息的收集方式及內容是進行負載狀態(tài)評估的基礎。文獻[5-6]通過實時采集服務器資源使用情況,并使用閾值法對服務器狀態(tài)進行判斷,由于獲取實時數據需頻繁采集服務器負載信息,這會占用大量資源;文獻[7]減少采集信息的頻率,并使用指數平滑預測未來幾期的CPU使用率,有效減少了由采集信息帶來的資源消耗,但是單一負載指標并不能有效地代表異構節(jié)點的負載情況。文獻[8-9]對阿里集群2018年最新集群公開數據進行研究,結果表明,在阿里異構集群中,服務器的CPU、內存、磁盤等資源都影響著服務器的負載狀態(tài)。文獻[10]將服務器過載類型依據過載資源類型分為高CPU型過載、高內存型過載與高帶寬型過載,在判斷過載時使用負載預測對未來幾期內的負載進行預測,從而增加了負載狀態(tài)判斷的合理性。
虛擬機觸發(fā)時機的判斷方法的有效性決定了虛擬機遷移觸發(fā)時機的合理性,通常使用閾值法對負載狀態(tài)進行判斷,但是由于虛擬機遷移任務到達會導致節(jié)點負載出現瞬時的抖動,即負載瞬時值,此值影響觸發(fā)時機的合理性,進而影響虛擬機遷移的效果。
文獻[11]設定觀察周期,當負載值連續(xù)多次超過閾值時,觸發(fā)虛擬機遷移,此方法雖可以減少由負載瞬時值引起的不必要的遷移,但是具有嚴重的滯后性,并影響數據中心的服務質量。文獻[12]使用CPU、內存和帶寬三維度負載指標,考慮各指標可用范圍設置雙閾值實現遷移時機的判斷,通過預測閾值動態(tài)可調范圍減少負載瞬時值的影響,但此方法并未考慮到全局負載量的變化,且未提供服務器輕度負載的判斷方法。文獻[13]使用混合負載預測法對未來負載進行預測,進而減緩瞬時負載值的影響,增加觸發(fā)時機的合理性,但是混合預測法算法復雜,且計算過程是在全局檢測模塊中進行的,當進行大批量的服務器負載的分析時,全局檢測模塊需消耗大量計算資源,可能會影響其他進程的執(zhí)行效率。文獻[14]針對異構節(jié)點的配置差異,在節(jié)點內監(jiān)測負載信息并使用IFTS預測節(jié)點負載,以每個節(jié)點的負載均衡得到整個系統(tǒng)的負載均衡,但是文獻中的IFTS節(jié)點預測模型具有一定復雜度,占用了一定的節(jié)點計算資源,從節(jié)點效率考慮,在虛擬機遷移觸發(fā)時機的合理性前提下,節(jié)點用于監(jiān)測與預測的計算資源應越少越好。
針對以上問題,本文設計一種基于節(jié)點負載狀態(tài)評估和動態(tài)閾值的虛擬機遷移觸發(fā)策略(NLADT-MMT)。選取三維度的負載指標并將負載狀態(tài)評估置于節(jié)點管理中,由節(jié)點監(jiān)測模塊負責收集該節(jié)點負載信息結合負載預測實現對該節(jié)點的負載狀態(tài)評估;全局監(jiān)測模塊負責收集所有節(jié)點的負載狀態(tài)信息,通過監(jiān)測全局負載度和高低負載節(jié)點比率動態(tài)調整閾值。
針對異構節(jié)點資源配置差異和現有的遷移觸發(fā)機制存在的問題,本文設計基于節(jié)點負載狀態(tài)評估和動態(tài)閾值的虛擬機遷移觸發(fā)策略,如圖1所示,該策略包括兩個部分,節(jié)點檢測模塊和全局檢測模塊。

圖1 虛擬機遷移觸發(fā)策略
各模塊功能如圖1所示,節(jié)點監(jiān)測模塊負責對節(jié)點負載狀態(tài)進行評估,并主動將需進行遷移的節(jié)點信息發(fā)送給全局監(jiān)控模塊;全局監(jiān)控模塊負責狀態(tài)閾值的動態(tài)調整,并接收節(jié)點負載信息,通過對全局負載度與高低負載節(jié)點占比進行監(jiān)控,判斷是否需要進行閾值調整,若需要則調整閾值并更新狀態(tài)閾值,將新的閾值發(fā)送給各個節(jié)點。
該策略將負載評估部分放置于各個節(jié)點中,針對各個節(jié)點的配置差異設定狀態(tài)閾值,可以節(jié)約全局檢測模塊的計算資源,且在規(guī)模較大時,可以獲得更佳的服務質量。虛擬機遷移觸發(fā)策略即確定需進行虛擬機遷移的節(jié)點列表,其過程可以用定義1表示。
定義1設數據中心有n個節(jié)點,節(jié)點集合為Node={N1,N2,…,Nn};虛擬機遷移時機觸發(fā)策略便是通過節(jié)點負載狀態(tài)評估,篩選出需進行虛擬機遷移操作的源節(jié)點集合S={s1,s2,…,sm},遷移觸發(fā)過程可以描述如下:
(1)
定義2節(jié)點負載狀態(tài)通過閾值法進行劃分,包括輕載、適載和重載狀態(tài)。負載超過高位閾值trh為重載;負載低于低位閾值trl為輕載;負載位于兩個閾值之間為適載。
tri={trh,trl|trh,trl∈(0,1)}
(2)
(3)

節(jié)點的負載狀態(tài)決定了節(jié)點可承接的任務量及虛擬機數量,由于云數據中心中負載通常具有隨機性、突變性與規(guī)律性[8-9]的特點,為了減少頻繁獲取節(jié)點實時負載信息的資源消耗與負載瞬時值對評估結果有效性的影響,本文使用狀態(tài)閾值法對節(jié)點負載進行評估,并采用負載預測,以獲得短時間內的未來負載值,減少采集信息的資源消耗,并降低負載瞬時值的影響。
2.2.1節(jié)點負載預測模型
本文將節(jié)點負載評估置于節(jié)點中,考慮到節(jié)點效益問題,節(jié)點預測模型應滿足在占用較少的計算資源和易實現的前提下獲得顯著的預測效果。
常用的簡單的短期預測模型包括自回歸移動平均模型(RAMA)、自回歸模型(RA)、指數平滑模型(ES)、移動平均模型(MA),其中RAMA效果最好,但是計算量及復雜度最高,其次ES效果最顯著,且復雜度及計算量較低[15]。一次指數平滑法適合趨勢較為平緩的時間序列預測[5],二次指數平滑法適合線性時間序列預測,三次指數平滑法(CES)適合非線性拋物線趨勢時間序列預測[16]。由于負載時間序列是非線性的,故本文選取CES預測模型,但是CES具有滯后性,文獻[17]采用分形插值法改進CES模型,并獲得較好的交通預測效果。故本文選取三次指數平滑法,并使用插值法解決滯后性問題,加入誤差修正減少峰谷值處誤差。建立預測模型如圖2所示,其中α為平滑因子。

圖2 改進三次指數平滑法的負載預測模型
1) 插值預處理。第m期的預測值為:
Yt+m=At+Btm+Ctm2
(4)
式中:At、Bt、Ct為第t期預測參數。
(5)
對平滑因子α進行迭代,將處理后的負載序列進行三次平滑,得到m期的預測擬合曲線Yt+m,并通過計算實際值之差與預測誤差的相關性,尋找最相關平滑因子αh。
2) 誤差修正。根據已知t期的負載數據,計算預測點處與實際值的誤差,并進行曲線擬合,計算處誤差曲線。根據實驗發(fā)現,第i期與第i-1期的差值與i點處實際值和預測值呈現相關性,故使用多項式擬合的方法,尋找誤差修正公式。通過曲線擬合,確定a、b、c、d的值,從而得到誤差表達式如下:
Res(m)=am3+bm2+cm+d
(6)
(7)
最終預測模型如下:
Yt+m=At+Btm+Ctm2+Res(m)
(8)
2.2.2節(jié)點負載狀態(tài)評估
1) 初始化資源權重。節(jié)點i的負載指標權重為Ki=[k1k2k3],其中k1+k2+k3=1,該資源資源配置與標準節(jié)點資源配置比即為負載指標權重比:
(9)
由此求得Ki,可計算節(jié)點負載度Li。
(10)
2) 初始化狀態(tài)閾值。在節(jié)點負載評估時,需根據該節(jié)點資源配置對此值進行初始化得到節(jié)點狀態(tài)閾值thi,其中trl=Thl,設τtype為type資源指標調節(jié)比例常數,則節(jié)點i的type資源指標的高位閾值計算公式如下:
(11)
為了減少異構節(jié)點中負載瞬時值的影響并提高負載狀態(tài)評估的合理性,本文設計基于負載預測的節(jié)點負載評估算法,算法流程如下:
Step1根據收集到的負載指標向量Ui組成節(jié)點負載狀態(tài)向量si,令Sti=0為初始值。
Step2分別進行各指標過載判斷,若負載指標均未大于該指標閾值則轉至Step 4;若負載指標大于該指標閾值且滿足以下條件之一便開啟負載預測。若不滿足以下任一條件則轉Step 6。負載指標預測開啟條件:(1) 上期數據與本期數據皆大于該指標的高位閾值;(2) 兩期數據呈現增長趨勢。
Step3進行負載指標預測,若預測周期內預測值均大于該指標閾值,則該節(jié)點為該指標類型過載,更新S值;跳轉至Step 6。
Step4計算節(jié)點負載度,若此值大于低位閾值轉至Step 6;若此值小于低位閾值且滿足以下條件之一便開啟負載預測。若不滿足以下任一條件則轉Step 6。負載度預測開啟條件:(1) 上期值與本期值皆小于低位閾值;(2) 兩期數據呈現下降趨勢。
Step5進行負載度預測,若預測周期內預測值均小于低位閾值,則該節(jié)點輕載,更新Sti=4;轉至Step 6。
Step6最終節(jié)點監(jiān)測模塊將更新后的si主動發(fā)送至全局監(jiān)測模塊。
算法流程如圖3所示。

圖3 節(jié)點的負載狀態(tài)評估算法流程
此節(jié)點負載評估算法根據節(jié)點配置設置狀態(tài)閾值,采用負載預測減少負載瞬時值的影響,但是狀態(tài)閾值不能根據數據中心負載狀況進行調整,故存在靈活性差問題。
狀態(tài)閾值是遷移時機判決算法中的評判標準,針對靜態(tài)閾值的適應性差和靈活度低問題,本文設計一種閾值動態(tài)調整方法,通過分析數據中心負載度、高負載比率和低負載比率對閾值進行動態(tài)調控。
1) 全局負載度。全局負載度可以用來監(jiān)控數據中心整體負載情況。當全局負載度過高時,數據中心整體接收大量的負載任務,此時開放更多資源以承接負載任務;當全局負載度過低時,數據中心的負載任務減少,此時縮減可用資源范圍,以節(jié)約資源。全局負載度計算方法如下。
取t時段內的負載信息并計算每個時刻內數據中心節(jié)點平均負載度,即:
(12)
得到全局負載度集合為{d1,d2,…,dt};剔除集合中的孤立點后集合為{d1,d2,…,dm},采用權重法計算全局負載度,如下:
(13)

(14)
為了保持數據中心的負載度,根據歷史信息,按時間段為數據中心設置負載范圍(ω1,ω2),當數據中心負載不在設定的范圍內時,進行是否進行閾值調整的分析。
2) 高低負載節(jié)點比率。高低負載節(jié)點比率表現出數據中心節(jié)點利用率情況。當高負載節(jié)點數量過多時,會多次觸發(fā)遷移操作,造成虛擬機頻繁遷移,耗費大量資源;低負載節(jié)點比率過多時,此時數據中心過多節(jié)點資源處于未充分利用狀態(tài),造成資源浪費與成本消耗。設高負載比率、低負載比率分別為Lrh和Lrl,在t時間段內,計算公式如下:
(15)
設置高負載比率范圍(minLrh,maxLrh)與低負載比率范圍(minLrl,maxLrl)以判斷是否進行閾值調整。
3) 閾值動態(tài)調整流程。通過全局負載度與高低負載節(jié)點比率實現對狀態(tài)閾值的動態(tài)調控,流程如下:
(1) 計算t時段內全局負載度D,若D∈(ω1,ω2)則數據中心在適度負載內,不需要調整閾值;否則轉步驟(2)。
(2) 計算高低負載節(jié)點,計算其占比Lrh和Lrl;分別比較其是否在設定的范圍內,若不在此范圍則轉步驟(3);否則需要進行閾值調整,調整方式如下:
(16)
(3) 若D>ωl且Lrh>maxLrh時,則數據中心接受大量負載,此時需要啟用新的節(jié)點服務器;若當D<ωl且Lrl>maxLrl時,則數據中心大量資源未被使用,此時需要關閉一些節(jié)點服務器,節(jié)約成本消耗。
基于以上研究,將動態(tài)閾值調整方法與節(jié)點負載評估方法進行整合,得到如圖4所示的遷移時機判決算法。

圖4 遷移時機判決算法流程
由全局監(jiān)測模塊對數據中心負載進行監(jiān)控,一旦全局負載度超過指定范圍或高低負載節(jié)點比率過高即開啟閾值的動態(tài)調控,并將更新后的閾值發(fā)送至各個節(jié)點中,由節(jié)點根據自身配置信息設置狀態(tài)閾值,用于節(jié)點負載狀態(tài)評估中;節(jié)點負載狀態(tài)評估完成后,將負載狀態(tài)向量發(fā)送至全局監(jiān)測模塊,由全局監(jiān)測模塊組成節(jié)點負載狀態(tài)矩陣并發(fā)送遷移請求。
為了評估本文遷移觸發(fā)策略(NLADT-MMT)的優(yōu)越性,采用CloudSim仿真平臺進行仿真驗證。分別進行2組實驗,一組選取50臺異構物理主機作為物理節(jié)點的小型數據中心,另一組選取1 000臺異構物理主機作為物理節(jié)點的大型數據中心,每臺主機上分別配置3至5個不同個數的虛擬機,則實驗環(huán)境配置如表1所示。
本文實驗的虛擬機遷移調度策略均使用虛擬機最小遷移策略(Minimum Migration,MM)。使用文獻[5]中的虛擬機遷移框架(即將本文負載評估和預測均放置在全局監(jiān)控模塊中)作為本文比對策略,包括2組比對對象,使用靜態(tài)閾值和負載預測判斷時機的策略(STLP-MMT)和使用動態(tài)閾值和負載預測判斷時機的策略(DTLP-MMT)。實驗參數如表2所示。

表2 實驗參數配置表
1) 節(jié)點負載預測誤差。節(jié)點負載預測誤差采用平均絕對誤差(MAE)和均方誤差(MSE)作為評價標準。
2) 虛擬機遷移次數。合理有效的遷移時機判決可以減少虛擬機的遷移次數,所以本文將虛擬機遷移次數作為評價標準。
3) 平均SLA違約率。用戶服務質量水平的高低通常用平均SLA違背率來評價,該值越低則表示用戶服務質量越高。本文采用文獻[12]中提供的多維度平均SLA違約率計算方法,即:
(17)

為了驗證本文設計的虛擬機遷移觸發(fā)策略(NLADT-MMT)適用于異構節(jié)點并可以有效減少由于瞬時峰值造成的虛擬機遷移,本文將實驗分析分為兩個部分,第一部分為節(jié)點的負載評估,包括節(jié)點負載預測的有效性以及節(jié)點狀態(tài)評估的有效性分析;第二部分為遷移觸發(fā)時機策略下,虛擬機遷移次數和SLA違約率的分析。
1) 節(jié)點負載評估有效性分析。實驗中對節(jié)點CPU、內存和帶寬利用率進行監(jiān)控,由于實驗分析過程相似,故取CPU利用率為例。實驗中每隔100 s收集一次節(jié)點資源使用信息。為了比較改進的預測模型的有效性,共選取10個節(jié)點的CPU真實值和預測值,對其進行誤差分析,以比較改進預測模型的有效性。MAE與MSE誤差比較圖如圖5所示。

(a) CPU利用率預測MAE
改進算法可以有效減小預測的誤差值,其MAE保持在0.2左右,且趨勢平坦,相對未改進前的CES預測模型,預測值的MAE減少了0.68;其MSE保持在0.08左右,趨勢也較為平坦,對比CSE,預測值的MSE減少了0.71。綜上,改進算法預測可以大幅度提升預測精度,具有一定的穩(wěn)定性。
為了驗證基于負載預測的節(jié)點負載評估算法可以有效降低負載瞬時峰值的影響,將使用負載預測的載狀態(tài)評估算法與未使用負載預測的載狀態(tài)評估算法進行比較分析,如圖8所示。其中CPU-NP、CPU-P、RAM-NP、RAM-P、BAND-NP、BAND-P分別表示沒有使用預測機制CPU利用率算法的觸發(fā)次數、使用預測機制的CPU利用率算法的觸發(fā)次數、沒有使用預測機制內存利用率算法的觸發(fā)次數、使用預測機制內存利用率算法的觸發(fā)次數、沒有使用預測機制帶寬利用率算法的觸發(fā)次數、使用預測機制的帶寬利用率算法的觸發(fā)次數。
共選取了6組對比實驗數據進行分析,針對負載較小、負載居中、負載較大的三種情況分別選取了兩組數據。從圖6可以看出,在六組數據中,基于節(jié)點預測的觸發(fā)策略在觸發(fā)次數方面均不同程度地低于沒有負載預測的觸發(fā)策略。由此可見,通過節(jié)點預測可以有效減少虛擬機觸發(fā)次數。

圖6 觸發(fā)次數比較
2) 遷移觸發(fā)時機綜合分析。遷移觸發(fā)的綜合分析包括虛擬機遷移次數和SLA違約率。研究使用STLP-MMT、DTLP-MMT和NLADT-MMT的虛擬機遷移策略在不同數量節(jié)點下的遷移次數,實驗對比結果如圖7所示。
可以看出,STLP-MMT的變化趨勢起伏波動最大,DTLP-MMT與NLADT-MMT的變化趨勢平緩。由此可見,根據數據中心整體負載變化動態(tài)設定狀態(tài)閾值可以有效減少虛擬機遷移次數和大批量的遷移操作,可以在一定程度上避免由于數據中心高負載情況下可用資源不足造成的虛擬機遷移。在節(jié)點數量多的實驗中,NLADT-MMT的優(yōu)勢得以顯現出來,由各個節(jié)點承擔負載狀態(tài)評估可以有效減少遷移時機觸發(fā)的延時性,減少全局檢測模塊的負載。全局檢測模塊中的資源一旦超載,其工作效率下降,則SLA違約率上升,影響數據中心的服務的質量。不同規(guī)格的數據中心下不同觸發(fā)策略的平均SLA違反率實驗對比如圖8所示。

(a) 小規(guī)模數據中心

(b) 大規(guī)模數據中心圖8 不同規(guī)格的數據中心下的平均SLA違反率比較
隨著時間推移,數據中心任務不斷增多,剩余可用資源減少,STLP-MMT使用的靜態(tài)閾值無法根據需要調節(jié)數據中心可用資源量,其平均SLA違反率逐漸上升。而使用了動態(tài)閾值的DTLP-MMT和NLADT-MMT的平均SLA違反率相對較低,對比圖8(a)和(b),可知在規(guī)模較大的數據中心中NLADT-MMT的平均SLA違反率最低。由此可見,動態(tài)閾值可以改善數據中心服務質量,在大規(guī)模數據中心中,將負載狀態(tài)評估放置在各個節(jié)點中的NLADT-MMT可以提供更好的服務質量。
綜上所述,在大規(guī)模含有異構節(jié)點的數據中心中,NLADT-MMT可以有效避免由于負載瞬時值導致的遷移時機判斷不合理問題,可以有效減少遷移觸發(fā)次數和SLA違約率,提高數據中心資源利用率。
本文針對數據中心異構節(jié)點設計一種基于節(jié)點負載評估和動態(tài)閾值的虛擬機遷移觸發(fā)策略。將負載狀態(tài)評估放置在各個節(jié)點管理中,由全局監(jiān)測模塊控制動態(tài)閾值并主動發(fā)送至各個節(jié)點中用以判斷節(jié)點負載狀態(tài)。實驗結果表明本文提出的負載評估模型可以由于大規(guī)模數據中心有效地對節(jié)點負載進行預測,減少負載瞬時值對遷移時機的影響;基于動態(tài)閾值的遷移判決算法從全局負載角度動態(tài)調節(jié)閾值,有效調節(jié)全局負載和高低負載節(jié)點占比率,降低SLA違約率。但要解決數據中心負載及資源利用率的問題,僅僅研究遷移時機是遠遠不夠的,調度算法對于解決數據中心存在的問題也至關重要。所以本文的后續(xù)工作是在此遷移時機判斷策略的基礎上,研究虛擬機調度策略,以提高數據中心資源利用率和優(yōu)化負載均衡。