王海濤 李戰(zhàn)懷 張 曉 卜海龍 孔蘭昕 趙曉南
(西北工業(yè)大學(xué)計算機學(xué)院 西安 710129) (工信部大數(shù)據(jù)存儲與管理重點實驗室(西北工業(yè)大學(xué)) 西安 710129)
為了應(yīng)對大數(shù)據(jù)的爆發(fā)式增長,目前云數(shù)據(jù)中心廣泛應(yīng)用了虛擬化技術(shù)[1]以實現(xiàn)服務(wù)系統(tǒng)的橫向擴展.虛擬化技術(shù)使得單個物理機(physical machine, PM)的資源可以分配給多個虛擬機(virtual machine, VM),從而產(chǎn)生若干個相互隔離的運行環(huán)境以部署不同類型的應(yīng)用.與傳統(tǒng)的技術(shù)相比,虛擬化技術(shù)使得云數(shù)據(jù)中心在基本維持原有服務(wù)能力的前提下,能夠提高數(shù)據(jù)中心的整體資源利用率,同時達(dá)到減少硬件成本以及運營成本、節(jié)約物理空間等目的.然而,虛擬化技術(shù)的靈活性和擴展性同時也帶來了新的資源管理問題,即虛擬機如何進行合理地分配和管理的問題.
一般云數(shù)據(jù)中心的應(yīng)用場景中,虛擬化技術(shù)為用戶提供一個共享的物理資源池,該資源池中可能包含上千臺物理服務(wù)器,各臺服務(wù)器的CPU、內(nèi)存以及網(wǎng)絡(luò)等資源可能是異構(gòu)或者同構(gòu)的,這些資源的分配通常以虛擬機為單位.當(dāng)用戶需要在虛擬平臺上部署自己的應(yīng)用時,就會向該資源池提出申請,數(shù)據(jù)中心根據(jù)用戶需求為其分配帶有適當(dāng)資源量的虛擬機,用戶在該虛擬機上運行應(yīng)用.數(shù)據(jù)中心的資源管理和調(diào)度模塊必須能夠及時地為數(shù)量龐大且不斷變化的用戶請求創(chuàng)建虛擬機,并為這些虛擬機分配適量的資源,以及確定虛擬機放置的目標(biāo)物理機.這就需要有合適的虛擬機分配方案(即虛擬機資源分配方法和虛擬機放置策略).不合適的方案可能造成2種后果:1)物理機負(fù)載過重,導(dǎo)致虛擬機資源沖突率升高,降低用戶體驗;2)物理機的資源利用率過低,導(dǎo)致物理資源的浪費,增加運營成本.這2種結(jié)果都會造成數(shù)據(jù)中心的收益下降,應(yīng)該盡量設(shè)法避免.因此,合理地進行虛擬機資源的分配和虛擬機的放置對于云數(shù)據(jù)中心至關(guān)重要.
針對上述問題,本文提出了2種基于歷史數(shù)據(jù)統(tǒng)計分析的虛擬機資源分配方法,能夠根據(jù)虛擬機的歷史數(shù)據(jù)統(tǒng)計結(jié)果為其分配合適的資源,從而減少需要開啟的物理機數(shù)量,提高物理資源的整體利用率,并盡量保證較低的物理資源沖突率.此外,針對現(xiàn)有的評價指標(biāo)無法全面評估虛擬機分配方案有效性的問題,提出了1個綜合有效性指標(biāo),從消耗的物理機數(shù)量、物理資源的利用率以及沖突率3個方面綜合評估虛擬機分配方案的有效性.最后通過實際的負(fù)載實驗,證明了本文提出的綜合有效性指標(biāo)能夠合理地評估虛擬機分配方案的整體有效性,并且本文提出的虛擬機資源分配方法優(yōu)于現(xiàn)有的常用方法.
在虛擬機資源分配和放置方面,Meng等人[2]提出一種配對分配的方法,即首先通過分析虛擬機的歷史負(fù)載,預(yù)測其未來一段時間的負(fù)載,根據(jù)負(fù)載預(yù)測值為虛擬機分配資源,然后選取2個負(fù)載模式負(fù)相關(guān)的虛擬機進行配對,將這對虛擬機分配到同一物理機上,從而提高物理機的資源利用率、減小沖突率.這種方法要求虛擬機的負(fù)載必須有較明顯的周期性或者趨勢性,否則預(yù)測效果會很差,造成虛擬機資源分配量不適當(dāng).此外,只能通過2個虛擬機進行配對,如果這對虛擬機的負(fù)載正相關(guān),則會造成物理機資源沖突升高.
Mylavarapu等人[3]考慮了虛擬機負(fù)載的隨機性,根據(jù)歷史負(fù)載的平均值作為虛擬機資源分配值,利用遺傳算法確定虛擬機的放置位置,并且在物理機上保留一定的空閑資源,目的是在保證服務(wù)水平協(xié)議(service level agreement, SLA)的前提下減少物理機使用量.Xu等人[4-5]提出了一個2層資源管理系統(tǒng),通過位于虛擬容器層的本地控制器管理虛擬機資源,位于資源池層的全局管理器管理物理資源.本地控制器使用模糊邏輯的方法,將測量到的當(dāng)前工作負(fù)載輸入模糊模型,再將負(fù)載映射到需要分配給虛擬機的資源量上,然后向全局控制器請求資源.全局控制器將資源的分配視為多目標(biāo)優(yōu)化問題,使用分組遺傳算法查找最優(yōu)遷移策略,減小物理資源浪費、運行功耗以及熱耗散.虛擬機的初始放置使用的是裝箱策略,包括降序首次適應(yīng)策略(first fit decreasing, FFD)和降序最佳適應(yīng)策略(best fit decreasing, BFD).
Beloglazov等人[6]提出了一種改進的降序最佳適應(yīng)策略,周期性地對物理機上的虛擬機進行重新分配,實際上相當(dāng)于一種虛擬機遷移算法,目標(biāo)是盡量減少物理機使用量,關(guān)閉空閑節(jié)點以節(jié)約能耗.Speitkamp等人[7]提出一種服務(wù)器整合方法,結(jié)合了歷史工作負(fù)載的數(shù)據(jù)變化分析以及虛擬機的放置算法,目標(biāo)是最小化物理機使用數(shù)量.該方法在進行虛擬機資源分配的時候,參考的是采樣周期中的歷史負(fù)載峰值,在進行虛擬機放置的時候使用的是分枝限界策略、首次適應(yīng)策略(first fit, FF)以及降序首次適應(yīng)策略(FFD).
李強等人[8]提出了一個云計算中虛擬機放置的自適應(yīng)管理框架,通過帶SLA約束的虛擬機放置多目標(biāo)優(yōu)化遺傳算法來制定虛擬機放置策略.算法綜合考慮了虛擬機放置策略中物理機消耗量以及虛擬機遷移次數(shù)2個目標(biāo),在保證滿足SLA的情況下,能夠有效減少物理機消耗量和虛擬機遷移次數(shù),但是忽略了物理機的資源利用率問題.Gupta等人[9]提出了一種資源感知的虛擬機放置算法.目標(biāo)是通過減小虛擬機放置所消耗的物理機數(shù)量來節(jié)約能耗,同時盡量保證各個物理機上的負(fù)載均衡.但是沒有考慮虛擬機負(fù)載的動態(tài)變化及其導(dǎo)致的資源沖突問題.
Sharma等人[10]提出了3種不同的啟發(fā)式算法,用于為虛擬機選擇合適的物理機進行放置以提高整體的資源利用率,但針對的是虛擬機遷移而非分配的問題;魏蔚等人[11]提出了一種通用云計算資源調(diào)度問題的快速近似算法,利用非線性規(guī)劃的數(shù)學(xué)方法,通過對資源需求分布函數(shù)以及資源總量的一系列反函數(shù)、求導(dǎo)等數(shù)學(xué)運算得出近似最優(yōu)的資源分配方案,但是其中涉及到的復(fù)雜數(shù)學(xué)運算會增加調(diào)度延遲.
綜上所述,對于虛擬機資源的分配,現(xiàn)有的研究主要使用虛擬機歷史負(fù)載的峰值或者平均值來確定虛擬機需要分配的資源量.而對于虛擬機的放置,常用的是降序首次適應(yīng)策略(FFD)、降序最佳適應(yīng)策略(BFD)以及下次適應(yīng)策略(next fit, NF)還有遺傳算法和非線性規(guī)劃等.這些方法的目標(biāo)一般是減少虛擬機分配策略的物理機消耗量,從而節(jié)約物理資源并降低能耗.
然而,在實際場景中,云數(shù)據(jù)中心虛擬機負(fù)載可能變化率很大,不一定有明顯的周期性.因此,通過歷史負(fù)載數(shù)據(jù)的峰值進行分配容易造成物理資源的浪費,增大物理機消耗量,導(dǎo)致運營成本增高;而使用歷史負(fù)載的平均值進行分配則可能造成虛擬機的資源不足,進而導(dǎo)致用戶體驗下降.遺傳算法和非線性規(guī)劃算法的計算比較復(fù)雜,且在負(fù)載多變的場景下得出的最優(yōu)方案容易失效,不適應(yīng)大量實時請求的處理.此外,現(xiàn)有的研究大多通過單一的指標(biāo)來確定分配方法的有效性,例如比較分配方法的物理機消耗量或者對比資源沖突率,缺乏一種全面的綜合性指標(biāo).過于強調(diào)節(jié)省物理機數(shù)量,可能造成物理機上虛擬機數(shù)量過多,使得資源競爭嚴(yán)重,進一步導(dǎo)致沖突率升高.反之,過于強調(diào)減小資源沖突率可能需要為虛擬機多分配過量資源,導(dǎo)致物理機利用率在大部分時間都比較空閑,從而造成資源浪費.
針對上述問題,本文提出了2種新的基于歷史數(shù)據(jù)的虛擬機分配方法以及1個綜合有效性評價指標(biāo).簡而言之,本文的主要貢獻有2方面:
1) 提出了2種新的基于歷史負(fù)載統(tǒng)計的資源分配方法,并與常用的峰值分配法和平均值分配法進行了對比,整體上優(yōu)于現(xiàn)有的分配方法.
2) 提出了1個綜合有效性指標(biāo),將物理機數(shù)量、資源利用率以及沖突率綜合起來進行考慮,能夠合理地評估不同方案(虛擬機分配方法+虛擬機放置策略)的整體有效性,得出最優(yōu)方案.
本節(jié)定義了虛擬機資源(本文指CPU)分配以及虛擬機放置的系統(tǒng)模型,以便于分配算法的實現(xiàn)和驗證.表1列出經(jīng)常要用到的符號以及對應(yīng)的含義.
Table 1 Notation and Meaning 表1 符號和含義
假設(shè)系統(tǒng)中目前有Np個可用的物理機、Nv個需要分配的虛擬機.每個虛擬機的歷史負(fù)載有Ns個采樣值,每個采樣值表示該虛擬機在該采樣時刻的CPU資源利用率值.虛擬機資源分配的目的是根據(jù)每個虛擬機的歷史負(fù)載數(shù)據(jù)確定其需要分配的CPU資源量,模型為
4) 資源分配(Fr)的目標(biāo)為
Fr(Cw)=Vr,
(1)
Vr=(r1,r2,…,rn).
(2)
虛擬機放置的目標(biāo)是將具有一定資源需求的虛擬機放置到合適的物理機上,盡量使得分配之后物理機的整體資源沖突率最小并且資源利用率最大.虛擬機放置的模型為
Fa(Vr,T)=(Vp,Nc,PT,Pc),
(3)
Vp=(p1,p2,…,pn),
(4)
其中,F(xiàn)a為虛擬機放置策略,輸入?yún)?shù)是虛擬機的資源利用率需求向量Vr以及資源利用率閾值T.經(jīng)過該策略作用之后,輸出結(jié)果是虛擬機分配需要的物理機數(shù)量Nc、虛擬機位置向量Vp、虛擬機放置完成之后物理機的總體資源利用率達(dá)到閾值T的概率PT(即4.2節(jié)所述的累積資源利用率),以及總體物理資源沖突率Pc.其中Nc,PT,Pc將作為評價虛擬機分配方案(即虛擬機資源分配方法與虛擬機放置策略的組合)有效性的指標(biāo),本文第4節(jié)將進行詳細(xì)論述.
虛擬機資源分配的方法有多種,常用的是根據(jù)歷史數(shù)據(jù)的峰值或者平均值確定虛擬機需要的資源量[2-3,7-8],本文分別用WMAX和WMEAN表示.為了解決現(xiàn)有方法資源分配有效性不高的問題,本文提出了通過負(fù)載分布概率以及期望值進行資源分配的方法.參照表1,令ri表示虛擬機mv,i分配到的物理資源利用率,wi,j表示虛擬機mv,i在采樣時刻j的負(fù)載值,Ns為虛擬機負(fù)載采樣值的數(shù)量,則各種資源分配方法的數(shù)學(xué)描述為
在實際應(yīng)用場景下,歷史數(shù)據(jù)會隨時間不斷積累,所以需要周期性地進行計算,根據(jù)新的分析結(jié)果調(diào)整虛擬機的放置.這可能會引入虛擬機的遷移工作,這一部分的討論不在本文范圍內(nèi).本文的目標(biāo)是盡量使得虛擬機的初始分配能夠適應(yīng)負(fù)載的變化,提高物理資源的整體利用率,同時減小沖突率.
根據(jù)虛擬機的負(fù)載請求為虛擬機分配資源之后,需要將虛擬機以一定的策略放置到具體的物理機上.通常將該問題抽象為裝箱問題,將物理機看作是固定大小的箱子,而虛擬機看作是具有不同體積的物品.如果在進行虛擬機放置時考慮多種資源限制,比如CPU利用率、內(nèi)存利用率以及磁盤利用率等,則可抽象為多維裝箱問題.多維裝箱問題較為復(fù)雜,因此目前許多相關(guān)工作將其簡化為1維裝箱問題[12-14],通常考慮的維度是CPU利用率.在1維裝箱問題中,常用的裝箱算法有下次適應(yīng)(NF)算法、降序首次適應(yīng)(FFD)算法以及降序最佳適應(yīng)算法(BFD)等.本文中,物品對應(yīng)的是虛擬機,物品的尺寸即虛擬機的CPU利用率負(fù)載;箱子對應(yīng)的是物理機,箱子的尺寸即物理機的CPU利用率閾值.當(dāng)虛擬機分配請求到來后,組成1個虛擬機資源請求隊列Lv(隊列成員值為各虛擬機的物理CPU資源需求)以及可用的物理機隊列Lp(隊列成員值為各物理機CPU已使用率).本節(jié)描述了這種場景下的常用虛擬機放置算法.
從虛擬機資源請求隊列的隊首開始分配,只要該虛擬機的CPU利用率請求沒有超過物理機的CPU閾值,就將其分配到物理機隊列的第1個物理機中,然后處理第2個虛擬機請求.如果第2個虛擬機請求可以分配到第1個物理機中而不超過其空閑CPU利用率,則將其分配到第1個物理機中,否則啟用第2個物理機來放置虛擬機,而第1個物理機將不再考慮放置剩余的虛擬機,如此循環(huán),直到Lv中所有虛擬機都被分配為止.算法偽代碼如算法1:
算法1. NF算法.
輸入:虛擬機CPU請求隊列Lv、列表大小Nv、物理CPU使用量閾值T;
輸出:物理機隊列Lp、使用的物理機數(shù)目Nc.
①Nc=1,j=1;
② whilej≤Nvdo
③ ifLv(j)==0
④j=j+1;
⑤ else ifLp(Nc)+Lv(j) >T
⑥Nc=Nc+1;
⑦Lp(Nc)=Lv(j);
⑧j=j+1;
⑨ else
⑩Lp(Nc)=Lp(Nc)+Lv(j);
FFD算法首先將虛擬機按照資源請求降序排列為虛擬機資源請求隊列Lv,然后通過首次適應(yīng)(FF)算法進行分配.具體過程是:先順序掃描物理機隊列Lp,將當(dāng)前虛擬機請求放入第1個能夠容納它的物理機中.如果當(dāng)前打開的物理機不能容納該虛擬機,則打開1個新的物理機進行放置,如此循環(huán)直至所有虛擬機放置完.算法偽代碼如算法2:
算法2. FFD算法.
輸入:虛擬機資源請求隊列Lv、列表大小Nv、各元素降序排列、物理CPU使用量閾值T;
輸出:物理機隊列Lp、使用的物理機數(shù)目Nc.
①Nc=1;
② fori=1 toNvdo
③j=1;
④ whilej≤Ncdo
⑤ ifLv(i)+Lp(j)≤T
⑥Lp(j)=Lp(j)+Lv(i);
⑦ break;
⑧ elsej=j+1;
⑨ end if
⑩ end while
BFD算法首先將虛擬機請求降序排列為虛擬機資源請求隊列Lv,然后按照排好的順序通過最佳適應(yīng)(BF)算法進行分配.具體過程是:放置虛擬機時先按順序掃描已經(jīng)打開的物理機,將其放入第1個能夠容納該虛擬機且放置之后空閑利用率最小的物理機中,如果當(dāng)前打開的物理機不能容納該虛擬機,則打開1個新的物理機進行放置,如此循環(huán)直至所有虛擬機放置完.算法偽代碼如算法3:
算法3. BFD算法.
輸入:虛擬機資源請求隊列Lv、列表大小Nv、各元素降序排列、物理CPU使用率閾值T;
輸出:物理機隊列Lp、使用的物理機數(shù)目Nc.
①Nc=1;
② fori=1 toNvdo
③j=1;
④sort(Lp)*將物理機列表按照CPU空閑利用率升序排列*
⑤ whilej≤Ncdo
⑥ ifLv(i)+Lp(j)≤T
⑦Lp(j)=Lp(j)+Lv(i);
⑧ break;
⑨ elsej=j+1;
⑩ end if
第3節(jié)描述了多種虛擬機資源分配方法和放置策略,如何合理地評價這些方案的有效性是一個關(guān)鍵問題.單純地使用某一方面的指標(biāo)來評價方案的有效性比較片面.例如消耗的物理機數(shù)量少不一定表示該分配方法很有效,因為這樣有可能造成每個物理機上的資源競爭比較激烈,導(dǎo)致資源沖突率升高.因此,本文認(rèn)為:從虛擬機的分配所消耗的物理機數(shù)量、物理機的資源利用率以及總體沖突率3個方面來綜合評價虛擬機分配方案會更合理.下面分別對這3個指標(biāo)進行說明.
物理機的消耗數(shù)量指的是服務(wù)所有虛擬機請求需要開啟的物理機數(shù)量.顯然,在虛擬機請求量一定的情況下,分配方案消耗的物理機數(shù)量越少,則能源消耗越小.反過來講,使用的物理機少也意味著每個物理機上平均承載的虛擬機數(shù)量多,這樣能夠提高物理資源的利用率,但是卻容易增大物理機上的資源沖突率.
在云環(huán)境中,平均資源利用率并不能有效表示物理機的資源利用情況.主要原因在于,虛擬機的負(fù)載會隨著時間變化,導(dǎo)致物理機資源利用率的時變性較大.例如物理機在時刻t1的資源利用率為70%,到了時刻t2可能會變?yōu)?0%.所以使用一般的資源利用率統(tǒng)計值表示物理機的資源利用情況,容易造成資源分配出現(xiàn)較大的偏差,導(dǎo)致物理機過載或低載.
為了解決這個問題,本文提出了基于概率分布的累積資源利用率來表示物理機在一段時間內(nèi)的資源利用情況.以CPU資源利用率為例,累積資源利用率定義為
1) 設(shè)物理機資源利用率的閾值為T,表示希望物理機的資源利用率能夠達(dá)到T值以上,以確保物理資源得到充分利用.
2) 設(shè)物理機x的CPU資源利用率矩陣為
其中,ui,j表示該物理機上第i個虛擬機在第j個采樣時刻的負(fù)載值,物理機x的資源利用率達(dá)到T以上的概率表示為
① https://www.planet-lab.org/,PlanetLab項目將分布于全球各地的上前臺服務(wù)器通過互聯(lián)網(wǎng)連接起來,用于在真實的全球分布式網(wǎng)絡(luò)上測試新的服務(wù).
(5)
(6)
其中,I(A)為指示函數(shù),當(dāng)條件A成立時I(A)=1,否則I(A)=0;NT,x表示采樣周期內(nèi),物理機x的CPU資源利用率(即其上的所有虛擬機分配到的物理CPU利用率之和)達(dá)到閾值T及以上的次數(shù).
當(dāng)對比物理機資源利用率時,需要將所有已開啟的物理機當(dāng)作一個整體來看.假設(shè)物理機的資源向量為Pr=(pr,1,pr,2,…,pr,Np),其中pr,i表示第i個物理機的最大CPU利用率,Np表示消耗的物理機總數(shù).因此,當(dāng)物理機資源利用率閾值為T時,定義累積資源利用率PT為
(7)
為了簡化問題,將物理機的資源利用率進行歸一化,以機器上的物理CPU數(shù)量為縮放因子,使得每個物理機的最大CPU利用率標(biāo)準(zhǔn)化為100%,因此對任意i,j有pr,i=pr,j=100%,則式(7)可以簡化為
(8)
將式(5)代入式(8),化簡之后可得出
(9)
由式(9)可以看出,在需要分配的虛擬機數(shù)量以及虛擬機資源請求確定的前提下,最終物理機總體的累積資源利用率與虛擬機資源分配方法和虛擬機放置策略都有關(guān)系,前者主要影響NT,i的值,后者主要影響Np值.
總體資源沖突率指的是某臺物理機上的所有虛擬機在某一時間段內(nèi)的資源沖突率.由于目前的主流虛擬平臺(如Xen,VMWare)都支持虛擬機之間的物理資源共享,所以各個虛擬機的資源需求總和可能超過物理資源總量,此時就會造成資源沖突.例如某臺物理機上分配了2個虛擬機A和B,初始CPU資源利用率都是40%,則物理機CPU總利用率為80%,此時沒有資源沖突.假如一段時間之后,虛擬機A的CPU利用率需求增長為80%,此時虛擬機A和B所需要的CPU資源總利用率達(dá)到120%,超過了物理機的CPU總利用率,從而導(dǎo)致資源沖突,進一步造成虛擬機的性能下降,影響用戶體驗.為了描述資源沖突的可能性,定義總體資源沖突率為采樣周期內(nèi)物理機資源利用率超過100%的概率,其計算方法與PT相同,只是將閾值T設(shè)為100,即:
Pc=PT(T=100).
(10)
第4節(jié)第1段已經(jīng)論述過,單獨通過某一指標(biāo)評估虛擬機分配方法的有效性具有片面性.本文認(rèn)為,在比較各種虛擬機分配方法時,需要考慮3個指標(biāo),即分配虛擬機資源請求需要的物理機數(shù)量Np、虛擬機放置之后物理機的累積資源利用率PT以及總體資源沖突率Pc.為了從整體上考慮這3個指標(biāo),本文提出了一個虛擬機分配方法的綜合有效性指標(biāo)E,其計算方法為
(11)
其中,Nv為需要分配的虛擬機請求的數(shù)量;Nc為虛擬機請求消耗的物理機數(shù)量;α,β,γ∈(0,1)表示各個指標(biāo)的權(quán)重值,且α+β+γ=1;E∈(0,1).
式(11)的含義是,當(dāng)需要分配的虛擬機請求數(shù)量一定時,E越接近1,則方法的綜合有效性越好.實際意義是,綜合有效性高表示物理機資源利用率高,消耗的物理機數(shù)量少,同時資源沖突率小,分配方案總體上更優(yōu).對于不同的應(yīng)用場景,主要關(guān)注的指標(biāo)可能有所不同,可根據(jù)實際需求調(diào)整上述3個權(quán)重值.
為了驗證綜合有效性指標(biāo)的可行性,并對比虛擬機分配方案的有效性,本節(jié)使用4.4節(jié)所述的數(shù)學(xué)模型,利用真實的虛擬機負(fù)載進行實驗評估.簡而言之,首先通過Matlab程序?qū)崿F(xiàn)了第2節(jié)的數(shù)學(xué)模型和第3節(jié)的放置策略,然后設(shè)置不同的參數(shù)調(diào)用各種虛擬機分配方案對應(yīng)的函數(shù)來處理實際的虛擬機負(fù)載,輸出第4節(jié)描述的各項指標(biāo),最后通過這些指標(biāo)來評估虛擬機分配方案.實驗使用的虛擬機負(fù)載集來自PlanetLab①項目,這些負(fù)載數(shù)據(jù)都是真實的虛擬機所占用的物理CPU利用率數(shù)據(jù).該數(shù)據(jù)集共有10天的虛擬機負(fù)載,每一天的虛擬機數(shù)目都是1 000左右,每個虛擬機每天的負(fù)載數(shù)據(jù)包含288個采樣值(每5 min采樣1次).評估的目標(biāo)包括3種常用的虛擬機放置策略(NF,F(xiàn)FD,BFD)以及4種資源分配方法(WMAX,WMEAN,WMIR,WEX).評估的指標(biāo)是第4節(jié)敘述的虛擬機分配消耗的平均物理機數(shù)量、物理機累積資源利用率、資源沖突率以及綜合有效性.
一般來說,歷史數(shù)據(jù)越充分,統(tǒng)計結(jié)果就越有代表性,為虛擬機分配的資源應(yīng)該越合理.但是,實時統(tǒng)計大量數(shù)據(jù)會增大調(diào)度系統(tǒng)的延遲.因此,沒有必要統(tǒng)計所有歷史數(shù)據(jù),選擇部分近期的數(shù)據(jù)作為代表也可以反映虛擬機近期的負(fù)載情況.本文的實驗中使用1/8的負(fù)載數(shù)據(jù)作為歷史數(shù)據(jù),以此為基礎(chǔ)為虛擬機分配資源.對于云數(shù)據(jù)中心來說,最關(guān)鍵的目標(biāo)是滿足客戶的需求,在此前提下充分利用物理機資源.因此,一般來說,資源沖突率指標(biāo)(γ)占的權(quán)值最大,資源利用率(α)次之.所以本實驗設(shè)置式(11)的有效性指標(biāo)各部分權(quán)值為:α=0.3,β=0.2,γ=0.5,設(shè)置物理機CPU利用率閾值T=80%.下面從4個方面分別討論實驗結(jié)果.
圖1展示了不同虛擬機資源分配方法與虛擬機(VM)放置策略的組合導(dǎo)致的平均物理機(PM)消耗量(越低越好).
Fig. 1 The number of PMs consumed by VMs’ allocation圖1 虛擬機分配消耗的物理機數(shù)量
從圖1可以看出,不論采用何種放置策略,WMAX方法消耗的物理機數(shù)量最多.這是因為WMAX方法根據(jù)虛擬機歷史負(fù)載的峰值進行資源分配,使得每個物理機上能夠放置的虛擬機數(shù)量最少,因此消耗的物理機最多.WMEAN方法消耗的物理機數(shù)量最少,這主要因為這些虛擬機大部分時候的負(fù)載都比較小,因此根據(jù)歷史負(fù)載計算出的平均負(fù)載也比較小,使得每個物理機上分配到的虛擬機數(shù)量較多,消耗的物理機數(shù)量少.WMIR和WEX計算出的資源需求量接近,因此消耗的物理機數(shù)量接近,都略高于WMEAN(不超過20%),但是相對于WMAX的物理機消耗數(shù)量大幅減少了約60%.
3種虛擬機放置策略消耗的物理機數(shù)量差別較小.在WMAX方法下,NF策略消耗的物理機明顯多一些,而在其他方法下則差別不明顯.BFD策略消耗的物理機數(shù)量最少,F(xiàn)FD策略消耗的物理機數(shù)量略多.這是因為BFD策略放置虛擬機的時候中心思想是盡量把每個物理機都放置滿,每一輪放置都要掃描剩余的所有虛擬機,找到最接近剩余容量的虛擬機請求,這樣使得物理機上的虛擬機放置在這3種策略里面最“緊湊”,從而消耗的物理機數(shù)量最少.因此,從物理機消耗量來看,WMAX方法代價太大,不推薦使用,BFD策略最節(jié)約,應(yīng)該優(yōu)先考慮.單獨從節(jié)省物理機資源的角度來看,使用BFD+WEX,BFD+WMEAN基本是最優(yōu)的.
圖2展示了在設(shè)置物理機資源利用率閾值為80%時,不同虛擬機資源分配方法與虛擬機放置策略的組合對應(yīng)的累積資源利用率對比(越高越好).
Fig. 2 The cumulative resource utilization of PMs圖2 物理機的累積資源利用率
從圖2可以看出,WMAX方法下物理機的累積資源利用率很小(0.1以下),原因是該方法使得物理機上分配的虛擬機較少,且由于虛擬機的負(fù)載較小,因此無法充分利用物理資源,造成比較嚴(yán)重的浪費.這種情況在虛擬機負(fù)載變化率大時會更嚴(yán)重.WMEAN方法整體上的累積資源利用率最高,其次為WEX,接著是WMIR.這3種方法的累積資源利用率高于WMAX的原因是,能夠在一定程度上規(guī)避少量突發(fā)大負(fù)載對資源分配的影響,盡量根據(jù)負(fù)載的整體水平來分配資源.在3種虛擬機放置策略中,NF策略的資源利用率最高,F(xiàn)FD略高于BFD.所以從資源利用率方面來看,接近最優(yōu)的方案應(yīng)該是NF+WMEAN,NF+WEX次之.
圖3展示了不同虛擬機資源分配方法與虛擬機放置策略的組合導(dǎo)致的總體沖突率,即物理機平均資源沖突率對比(越低越好).
Fig. 3 The average resource collision rate of PMs圖3 物理機平均資源沖突率
從圖3可以看出,WMAX的沖突率最小(不超過0.05),而WMEAN的沖突率最大,WMIR與WEX則介于2者之間.結(jié)合圖2和圖3可知,累積資源利用率與總體沖突率之間存在一定程度的正相關(guān)關(guān)系.正如5.2節(jié)的分析,由于WMAX策略使得每個物理機上分配的虛擬機數(shù)量最少,因此其總體的累積資源利用率最小,這種情況下發(fā)生資源沖突的概率最小.而其他3種分配方法雖然提升了資源利用率,卻由于物理機上的虛擬機分配較多,更容易造成資源沖突.此外,NF策略造成的沖突率比其他虛擬機放置策略大約高1倍.所以從資源沖突率來看,首選方案應(yīng)該是BFD+WMIR,F(xiàn)FD+WMIR次之.
結(jié)合圖1、圖2以及圖3可以得出,關(guān)注的指標(biāo)不同會導(dǎo)致不同的最優(yōu)方案.在實際環(huán)境中,負(fù)載模式的差別也會造成最優(yōu)方案的不同.然而,云數(shù)據(jù)中心需要有能夠兼顧3個指標(biāo)的方案,使得在滿足用戶需求的同時能夠充分利用現(xiàn)有物理資源,減小消耗的物理機數(shù)量,從而降低成本.本文提出的綜合有效性指標(biāo)可以將3種指標(biāo)統(tǒng)一起來,便于為云數(shù)據(jù)中心選擇合適的虛擬機分配方案.本文實驗設(shè)置3個指標(biāo)的權(quán)重為:α=0.3,β=0.2,γ=0.5,根據(jù)式(11)計算不同分配方案的有效性指標(biāo)E值,得出表2:
Table 2 Integrated Effectiveness Comparison表2 綜合有效性對比 %
Notes: Bold value means BFD+WMIR scheme is able to get the highest integrated effectiveness.
由表2可以看出,在PlanetLab的應(yīng)用場景下,使用BFD+WMIR方案能夠達(dá)到最高的綜合有效性,F(xiàn)FD+WMIR次之.這表明,BFD+WMIR方案最能夠在充分利用物理資源的同時減少消耗的物理機數(shù)量,并降低資源沖突率.結(jié)合圖1、圖2以及圖3可以發(fā)現(xiàn),該結(jié)論與5.1節(jié)、5.2節(jié)以及5.3節(jié)的分析相吻合,也就是說綜合有效性指標(biāo)能夠合理地綜合評價虛擬機分配方案.但是要注意的是,如果應(yīng)用的需求發(fā)生變化,則需相應(yīng)調(diào)整α,β,γ的值,得出的最優(yōu)組合會相應(yīng)地變化.雖然粗略看來,綜合有效性指標(biāo)的通用性似乎較小.但實際上這樣的靈活性對于負(fù)載多變的數(shù)據(jù)中心來說更加有利.數(shù)據(jù)中心可根據(jù)實際需求設(shè)置綜合有效性指標(biāo)的各部分權(quán)值,選擇最合適的虛擬機分配方案,從而減少成本、增加收益.
從實驗結(jié)果來看,首先,本文提出的綜合有效性指標(biāo)能夠從整體上合理地評估虛擬機分配方案,且具有較強的靈活性.其次,本文提出的虛擬機資源分配方法WEX和WMIR的綜合有效性都高于常用的方法WMAX和WMEAN.因此,在要求提高物理機資源利用率同時減少資源沖突率的場景下,本文提出的WMIR方法以及WEX方法表現(xiàn)比常用的虛擬機資源分配方法更優(yōu)異.
需要注意的是,不同的應(yīng)用場景要求的指標(biāo)權(quán)重值有所不同,得出的最優(yōu)策略也不盡相同,不能一概而論.實際上,在確定應(yīng)用需求后,就可以大致設(shè)置這3個評價指標(biāo)的權(quán)重,然后根據(jù)虛擬機的歷史負(fù)載數(shù)據(jù)通過仿真測試得出最優(yōu)方案,再按照最優(yōu)方案進行實際的虛擬機分配.這種思路具有很大的靈活性和可操作性,可應(yīng)用在數(shù)據(jù)中心進行自適應(yīng)的虛擬機最優(yōu)分配.通過這樣的一個自適應(yīng)機制,就可以動態(tài)地根據(jù)虛擬機負(fù)載的變化以及用戶的需求進行方案的調(diào)整,從而達(dá)到節(jié)約物理資源、減小成本、提高收益的目的.當(dāng)然,本文是基于PlanetLab的應(yīng)用場景進行的實驗,與生產(chǎn)環(huán)境中的云數(shù)據(jù)中心場景有所不同.在實際應(yīng)用時還需針對相應(yīng)的平臺進行改進,這也是作者未來的研究方向之一.
本文提出了2種根據(jù)歷史數(shù)據(jù)統(tǒng)計信息進行虛擬機資源分配的方法以及1個綜合有效性指標(biāo),能夠從整體上評估物理機消耗量、資源利用率以及沖突率3方面的指標(biāo),得出整體最優(yōu)的方案.通過實際的虛擬機負(fù)載實驗驗證,本文提出的資源分配方法在3種常用的虛擬機放置策略下能夠達(dá)到整體最優(yōu).本文提出的根據(jù)歷史數(shù)據(jù)統(tǒng)計信息進行虛擬機資源分配的方法以及綜合有效性指標(biāo)能夠應(yīng)用于云數(shù)據(jù)中心的虛擬機分配,在滿足用戶服務(wù)需求的同時,達(dá)到提高資源利用率并降低沖突率的目標(biāo).