陶文林?于復(fù)生
摘 要:本文提出一種利用專家系統(tǒng)建立虛擬機(jī)部署和遷移機(jī)制的方法。該方法以CLIPS語(yǔ)言作為框架,并結(jié)合專家系統(tǒng)的特點(diǎn)對(duì)虛擬機(jī)的部署和遷移機(jī)制進(jìn)行改進(jìn),提出基于不同業(yè)務(wù)特點(diǎn)的負(fù)載平滑預(yù)測(cè)的部署策略,和基于臟頁(yè)預(yù)測(cè)匹配的遷移策略,適用于復(fù)雜環(huán)境的云環(huán)境下虛擬機(jī)的管理,通過(guò)模擬測(cè)試驗(yàn)證了該機(jī)制有效性。
關(guān)鍵詞:專家系統(tǒng);虛擬機(jī);部署;遷移;平滑預(yù)測(cè)
虛擬機(jī)的部署和遷移是云計(jì)算應(yīng)用的重要課題。虛擬機(jī)的遷移需要在保持虛擬機(jī)運(yùn)行的同時(shí),把它從一臺(tái)主機(jī)轉(zhuǎn)移到另一臺(tái)主機(jī)上,以靈活調(diào)配計(jì)算資源。目前,虛擬機(jī)遷移和部署的比較先進(jìn)的方法主要有“快速預(yù)拷貝技術(shù)”和“負(fù)載均衡部署機(jī)制”等??焖兕A(yù)拷貝技術(shù)通過(guò)判斷在遷移過(guò)程中頻繁改動(dòng)的內(nèi)存頁(yè)面,決定是否在最后一輪迭代中傳輸,以降低內(nèi)存臟頁(yè)率,達(dá)到快速遷移的目的。
專家系統(tǒng)由于能在一定程度上解決不確定性,能有效地模擬人類專家的各種判斷能力并能學(xué)習(xí)新規(guī)則、新知識(shí)等特點(diǎn)而越來(lái)越被廣泛應(yīng)用。本文在此基礎(chǔ)上對(duì)虛擬機(jī)部署機(jī)制進(jìn)行改進(jìn),提出利用專家系統(tǒng)的方法,對(duì)虛擬機(jī)的部署和遷移進(jìn)行一體化調(diào)度,智能地選擇合適的主機(jī)和時(shí)機(jī)對(duì)虛擬機(jī)進(jìn)行部署和遷移,探索了基于專家系統(tǒng)的云環(huán)境下虛擬機(jī)智能部署和遷移機(jī)制和方法,詳述了專家系統(tǒng)的設(shè)計(jì)原理。
一、改進(jìn)的基于均衡負(fù)載的虛擬機(jī)部署機(jī)制
1. 虛擬機(jī)部署機(jī)制
云計(jì)算域內(nèi)的調(diào)度中心接受用戶的部署請(qǐng)求,選擇虛擬機(jī)模板,根據(jù)其業(yè)務(wù)特征計(jì)算出負(fù)載量,并向域內(nèi)的宿主機(jī)發(fā)出資源請(qǐng)求廣播,宿主機(jī)對(duì)自身的當(dāng)前和下一時(shí)刻負(fù)載進(jìn)行檢測(cè),判斷是否達(dá)到部署要求,并反饋給調(diào)度中心。
不同的用戶業(yè)務(wù)對(duì)虛擬機(jī)的各類資源的使用頻度不同,例如,需要進(jìn)行科學(xué)計(jì)算的業(yè)務(wù)對(duì)虛擬機(jī)的CPU資源需求較大;需要進(jìn)行文件備份存儲(chǔ)的業(yè)務(wù)對(duì)虛擬機(jī)的磁盤(pán)空間和吞吐率需求較大。因此在本專家系統(tǒng)中需要定義這類業(yè)務(wù)相關(guān)的資源需求指標(biāo),將CPU、內(nèi)存、磁盤(pán)空間、磁盤(pán)吞吐率、網(wǎng)絡(luò)帶寬五類負(fù)載加權(quán)求和示意如下:
W(cpu)+W(mem)+W(dfree)+W(dThroughput)+W(bandwidth)=1 ①
各權(quán)值W用戶或管理員定義后存在事實(shí)庫(kù)中。
2.負(fù)載預(yù)測(cè)算法
虛擬機(jī)的負(fù)載情況具有一定的一貫性,過(guò)去的負(fù)載情況會(huì)影響未來(lái)的負(fù)載值(占用率)。相關(guān)文獻(xiàn)對(duì)虛擬機(jī)的負(fù)載預(yù)測(cè)機(jī)制進(jìn)行了一些探索,較為多見(jiàn)的是采用時(shí)間序列模型對(duì)負(fù)載進(jìn)行預(yù)測(cè)。
本文采用時(shí)間序列平滑預(yù)測(cè)法中的霍爾特雙參數(shù)線性指數(shù)平滑法預(yù)測(cè)下一時(shí)刻的虛擬機(jī)負(fù)載量。霍爾特雙參數(shù)線性指數(shù)平滑法屬于線性二次指數(shù)平滑法,該方法的優(yōu)點(diǎn)是可以用不同的平滑參數(shù)對(duì)負(fù)載值序列的兩種因素進(jìn)行平滑,具有很大的靈活性。宿主機(jī)負(fù)載的預(yù)測(cè)值為:
S1=αx1+(1-α)(St-1+bt-1) ②
b1=γ(S1-St-1)+(1-γ)bt-1 ③
Ft+m=St+btm ④
α、γ為平滑參數(shù),F(xiàn)t為實(shí)際測(cè)得負(fù)載值,m為預(yù)測(cè)時(shí)刻數(shù),②③式是平滑公式,②式利用前一期的趨勢(shì)值bt-1直接修正平滑值St;③式是用來(lái)修正趨勢(shì)項(xiàng)bt,趨勢(shì)值用相鄰兩次平滑值之差來(lái)表示,可以利用平滑系數(shù)γ對(duì)兩次相鄰平滑值之差進(jìn)行修正。
由系統(tǒng)管理員根據(jù)經(jīng)驗(yàn)在專家系統(tǒng)中設(shè)置α、γ的值。根據(jù)本算法可求出某臺(tái)宿主機(jī)的負(fù)載預(yù)測(cè)值,再組成UDP報(bào)文反饋給調(diào)度中心。
3.宿主機(jī)選擇策略
根據(jù)用戶業(yè)務(wù)特點(diǎn)靈活計(jì)算虛擬機(jī)的資源需求,再由負(fù)載預(yù)測(cè)算法求出該宿主機(jī)各類資源的未來(lái)負(fù)載預(yù)測(cè)值,經(jīng)UDP報(bào)文反饋給調(diào)度中心后,由本專家系統(tǒng)進(jìn)行匹配。
根據(jù)相關(guān)文獻(xiàn)的思想,首先利用預(yù)定義的資源需求權(quán)值W,求出各宿主機(jī)的資源可用率Hn:
Hn=W(cpu)(1-Cn)+ W(mem)(1-Mn)+ W(dfree)(1-DRn)+ W(dThroughput)(1-DTn)+ W(bandwidth)(1-Bn) ⑤
Cn、Mn、DRn、DTn、Bn分別是CPU、內(nèi)存、磁盤(pán)空間、磁盤(pán)吞吐率、網(wǎng)絡(luò)帶寬負(fù)載預(yù)測(cè)值。
調(diào)度中心的專家系統(tǒng)將所有參數(shù)讀入事實(shí)庫(kù),匹配規(guī)則已定義好并存在知識(shí)庫(kù)內(nèi),利用內(nèi)置的推理機(jī)進(jìn)行匹配,調(diào)整和優(yōu)化,選擇最合適的宿主機(jī),最后將虛擬機(jī)快速拷貝到選定宿主機(jī)上。用戶或管理員可以根據(jù)業(yè)務(wù)需要和管理效率自行設(shè)置知識(shí)庫(kù),隨著云計(jì)算業(yè)務(wù)規(guī)模的擴(kuò)大,可以制定復(fù)雜的匹配規(guī)則。一個(gè)簡(jiǎn)單的示例匹配規(guī)則如下:
(1)同一虛擬機(jī)業(yè)務(wù)的W(cpu)、W(mem)相差超過(guò)閥值,則重定義之,再計(jì)算H值;
(2)同一虛擬機(jī)業(yè)務(wù)的W(dThr-
oughput)、W(bandwidth) 相差超過(guò)閥值,
或W(dThroughput)> W(bandwidth)則重定義之,再計(jì)算H值;
(3)同一虛擬機(jī)業(yè)務(wù)的W(band-
width)、W(mem)相差超過(guò)閥值,則重定義之,再計(jì)算H值;
(4)兩個(gè)H值接近的宿主機(jī),優(yōu)先匹配網(wǎng)絡(luò)帶寬的F值較大者,即提高該主機(jī)的H值;
(5)同一宿主機(jī),某資源的W 值最大,而對(duì)應(yīng)的F值高于警戒閥值,則該機(jī)H值置為0。
二、改進(jìn)的快速預(yù)拷貝機(jī)制
1.快速預(yù)拷貝機(jī)制
有學(xué)者提出了一種較新的虛擬機(jī)快速預(yù)拷貝方法,通過(guò)記錄內(nèi)存頁(yè)面的改動(dòng)情況,用概率預(yù)測(cè)的思想篩選出改動(dòng)頻繁的臟頁(yè)面,將它們安排在快速拷貝的最后一輪迭代中傳輸,避免了無(wú)謂的重復(fù)傳輸,從而節(jié)省帶寬,加快遷移速度。
這種新的與拷貝方法將修改頻繁的頁(yè)歸入工作集(Writable Working Set,WWS)內(nèi),根據(jù)內(nèi)存頁(yè)面的訪問(wèn)情況,用概率預(yù)測(cè)原理預(yù)測(cè)頁(yè)面變臟的概率,較高的臟頁(yè)再次被修改的概率也高,概率較高的頁(yè)面被歸入工作集內(nèi),暫不傳輸。
2. 臟頁(yè)篩選預(yù)測(cè)策略
預(yù)測(cè)臟頁(yè)的概率一般比較復(fù)雜,但在專家系統(tǒng)中,可以定義很多預(yù)測(cè)臟頁(yè)的規(guī)則,形成知識(shí)庫(kù)供專家系統(tǒng)推理,一個(gè)簡(jiǎn)單的示例預(yù)測(cè)規(guī)則如下:
(1)相鄰地址的頁(yè)面屬于工作集,則該頁(yè)面設(shè)為高臟頁(yè)率(>50%);
(2)監(jiān)控到連續(xù)兩次被修改的頁(yè)面歸入工作集;
(3)前一時(shí)刻剛修改過(guò)的頁(yè)面設(shè)為高臟頁(yè)率(>50%);
(4)閥值時(shí)間段T1內(nèi)的發(fā)生過(guò)3次修改的頁(yè)面歸入工作集;
(5)閥值時(shí)間段T2內(nèi)一直沒(méi)有修改過(guò)的頁(yè)面設(shè)定臟頁(yè)率(>40%);
(6)閥值時(shí)間段T2外,每一時(shí)刻沒(méi)有修改過(guò)的頁(yè)面,臟頁(yè)率累加5%;
(7)臟頁(yè)率>60%的頁(yè)面歸入工作集。
該套規(guī)則庫(kù)的策略比較保守,工作集會(huì)比較大,但能有效減少頁(yè)面的重復(fù)傳送率,在虛擬機(jī)拷貝的末期,傳輸量會(huì)很大。專家系統(tǒng)的知識(shí)庫(kù)對(duì)用戶限定權(quán)限開(kāi)放,系統(tǒng)管理員無(wú)需專業(yè)的程序設(shè)計(jì)技能,就可以根據(jù)云計(jì)算業(yè)務(wù)情況自行定義和修改規(guī)則,存入知識(shí)庫(kù),大大方便了云計(jì)算系統(tǒng)的管理。
本文中的專家系統(tǒng)采用CLIPS為主設(shè)計(jì)語(yǔ)言。CLIPS即“C語(yǔ)言集成產(chǎn)生式系統(tǒng)”,是一種基于規(guī)則的、多范例的專家系統(tǒng)編程語(yǔ)言,可移植性高。
先經(jīng)過(guò)充分的系統(tǒng)需求分析論證,接著與行業(yè)專家(云平臺(tái)管理、網(wǎng)絡(luò)、軟件、用戶業(yè)務(wù))廣泛接觸,獲取虛擬機(jī)部署和遷移的要求和規(guī)則描述,以及各類元素的知識(shí)表達(dá),開(kāi)始構(gòu)建事實(shí)庫(kù)和知識(shí)庫(kù)。部分事實(shí)庫(kù)代碼如下:
自定義模板描述虛擬機(jī)
(deftemplate MAIN::device
(slot name (type Dom0))
(slot status (allowed-values on off)))
設(shè)置待部署虛擬機(jī)出事?tīng)顟B(tài)為開(kāi)on
(deffacts MAIN::device-information
(device(name Dom0)(status on))
(device)name Dom1)(status on))
(device)name Dom2)(status on)))
通過(guò)偵測(cè)器模塊偵測(cè)實(shí)時(shí)負(fù)載和臟頁(yè)率
(deftemplate MAIN:: Detector
(slot name(type Dom0_Det))
(slot state(allowed-values dirtypage
low-load-valus
high-load-valus)
(default Preset_value))
三、實(shí)驗(yàn)與分析
CLIPS本身用C語(yǔ)言編寫(xiě),因此很容易嵌入到其他高級(jí)語(yǔ)言中,特別是VC++平臺(tái)。為了方便進(jìn)行技術(shù)驗(yàn)證實(shí)驗(yàn),采用直接嵌入方式,把CLIPS的源代碼嵌入到C++程序中,經(jīng)過(guò)修改,可以在VC++平臺(tái)內(nèi)重新編譯鏈接。
模擬試驗(yàn)環(huán)境建立在4臺(tái)計(jì)算機(jī)構(gòu)成的局域網(wǎng)上,每臺(tái)主機(jī)都運(yùn)行安裝了Xen4.1.2的Fedora 16,其中一臺(tái)主機(jī)模擬為調(diào)度中心,并安裝了CLIPS平臺(tái)和專家系統(tǒng)的原型。另3臺(tái)作為模擬為待部署的宿主機(jī),其上運(yùn)行各類常見(jiàn)應(yīng)用程序。所有主機(jī)通過(guò)一臺(tái)千兆交換機(jī)相連,處于同一個(gè)云計(jì)算域內(nèi)。
實(shí)驗(yàn)中對(duì)3個(gè)虛擬機(jī)模板進(jìn)行不同組合,同時(shí)進(jìn)行部署和遷移。做9次部署和遷移,每臺(tái)虛擬機(jī)模板各取平均值,在式②③中設(shè)α=0.37、γ=0.38。宿主機(jī)選擇策略中的權(quán)值相差閥值選為0.4,負(fù)載預(yù)測(cè)值的警戒閥值選為85%,設(shè)臟頁(yè)率監(jiān)控時(shí)間段T1 =5,T2=10。
本文系統(tǒng)的虛擬機(jī)部署時(shí)間比傳統(tǒng)方法發(fā)生首次遷移時(shí)間明顯縮短,而遷移時(shí)間比傳統(tǒng)方法略有降低,說(shuō)明本系統(tǒng)中一定程度上是有效的。
四、結(jié)論
利用專家系統(tǒng)技術(shù)建立的基于負(fù)責(zé)預(yù)測(cè)的虛擬機(jī)部署和基于臟頁(yè)預(yù)測(cè)的虛擬機(jī)遷移方法提高了資源分配的靈活性和管理的便利性,緩解了計(jì)算資源分配的不合理問(wèn)題。專家系統(tǒng)中的知識(shí)庫(kù)和一些參數(shù)對(duì)系統(tǒng)管理員和用戶有限開(kāi)放,可以根據(jù)實(shí)際情況進(jìn)行調(diào)整,在很大程度上提高了云計(jì)算調(diào)度中心的管理效率。
參考文獻(xiàn):
[1]馬 飛,劉 峰,李竹伊.云計(jì)算環(huán)境下虛擬機(jī)快速實(shí)時(shí)遷移方法[J].北京郵電大學(xué)學(xué)報(bào),2012(01).
[2]何增輝.基于預(yù)測(cè)機(jī)制的負(fù)載均衡模型的研究[D].鄭州:鄭州大學(xué),2010.
(作者單位:蘇州市職業(yè)大學(xué))