魏志剛,黃 剛
(南京郵電大學(xué) 計算機(jī)學(xué)院、軟件學(xué)院,江蘇 南京 210003)
虛擬機(jī)實時遷移的研究
魏志剛,黃 剛
(南京郵電大學(xué) 計算機(jī)學(xué)院、軟件學(xué)院,江蘇 南京 210003)
虛擬機(jī)的實時遷移技術(shù)就是把虛擬機(jī)完整的從源物理主機(jī)遷移拷貝到另外一臺物理主機(jī)上,在負(fù)載均衡和災(zāi)難恢復(fù)方面起到了重要作用。預(yù)拷貝算法實現(xiàn)了虛擬機(jī)的實時遷移,但在高負(fù)載場景下,一些內(nèi)存頁會被反復(fù)傳送,嚴(yán)重影響了遷移效率,延長了總遷移時間。針對此問題,提出了基于臟頁預(yù)測算法,在高負(fù)載場景下,采用動態(tài)指數(shù)平滑法對臟頁面進(jìn)行工作集預(yù)測,減少臟頁面的傳送,對于高頻臟頁,直接放入最后停機(jī)拷貝時傳送,從而減少實時遷移的時間,提高遷移效率。實驗結(jié)果表明,改進(jìn)后的算法能在高負(fù)載場景下有效提高虛擬機(jī)實時遷移的性能。
實時遷移;預(yù)拷貝;臟頁;總遷移時間
虛擬化(Virtualization)是云計算中最核心的技術(shù)[1],其主要是使用虛擬機(jī)監(jiān)視器(Virtual Machine Monitor)來調(diào)度計算機(jī)底層的硬件資源,實現(xiàn)多個虛擬資源對同一個硬件資源的共享,并且每個虛擬資源可以作為獨立的主機(jī)[2],充分提高設(shè)備的利用率,降低能耗,對計算機(jī)硬件資源的分配和管理更加便捷[3]。
虛擬機(jī)動態(tài)遷移(Live Migration)[4]就是把一臺正在運(yùn)行的虛擬機(jī)遷移到另一臺物理機(jī)上,并且虛擬機(jī)可以保持原有的狀態(tài)正常運(yùn)行。虛擬機(jī)的遷移主要包括存儲設(shè)備、網(wǎng)絡(luò)以及內(nèi)存這三個方面的遷移[5]。其中,存儲設(shè)備的遷移對于網(wǎng)絡(luò)帶寬及時間影響較大,因此主要采用NFS共享數(shù)據(jù)和文件系統(tǒng)來提高遷移效率。網(wǎng)絡(luò)遷移是遷移虛擬機(jī)上的網(wǎng)絡(luò)設(shè)備,包括協(xié)議狀態(tài)以及IP地址。發(fā)送ARP重定向包,將IP地址與Mac地址綁定在一起,這樣使得虛擬機(jī)所有的包都可以發(fā)送到目標(biāo)主機(jī)上,從而實現(xiàn)網(wǎng)絡(luò)的遷移。內(nèi)存遷移產(chǎn)生的數(shù)據(jù)量大,而且實時存在變化,因此內(nèi)存遷移是最重要的部分。
目前,內(nèi)存遷移主要采用預(yù)拷貝(Pre-copy)算法(如Xen,KVM),以迭代的方式把內(nèi)存頁拷貝到目的機(jī)。預(yù)拷貝算法在低負(fù)載的場景下遷移性能優(yōu)越,但是在高負(fù)載場景下,因為需要大量地傳送重復(fù)的內(nèi)存頁,導(dǎo)致總的遷移時間過長,遷移性能低下。
針對預(yù)拷貝算法的不足,提出一種臟頁預(yù)測算法,使用動態(tài)指數(shù)平滑法預(yù)測臟頁,優(yōu)化預(yù)拷貝機(jī)制,減少一些內(nèi)存頁的反復(fù)重傳,縮短遷移過程中的總時間。
近些年對實時遷移的研究中,針對預(yù)拷貝技術(shù)在高負(fù)載環(huán)境下存在的不足,國內(nèi)外學(xué)者提出了多種優(yōu)化方法來提高其效率與性能。文獻(xiàn)[6]根據(jù)統(tǒng)計的頁面的活躍度,提出了分層拷貝算法和臟頁減速算法,減少動態(tài)遷移的時間。文獻(xiàn)[7]結(jié)合按需和內(nèi)存推送復(fù)制方式,提出了動態(tài)混合遷移機(jī)制—HybMEC,實現(xiàn)了虛擬機(jī)狀態(tài)的快速遷移,提高了實時遷移的性能。文獻(xiàn)[8]引入馬爾可夫模型預(yù)測工作集,細(xì)分了內(nèi)存頁的狀態(tài),提高了概率預(yù)測算法的準(zhǔn)確性。文獻(xiàn)[9]針對內(nèi)存頁的不同特征,提出了適應(yīng)性壓縮方法模型—MECOM,降低了傳輸頁面的大小。
文中總結(jié)了相關(guān)工作,對預(yù)拷貝技術(shù)進(jìn)行深入分析,提出一種臟頁預(yù)測算法,對內(nèi)存頁的變臟程度進(jìn)行適時預(yù)測,對于臟頁率低的內(nèi)存頁優(yōu)先傳送。在Xen中的實驗表明,改進(jìn)的機(jī)制有效提高了動態(tài)遷移在高負(fù)載場景的性能,縮短了總遷移時間。
2.1 預(yù)拷貝算法介紹
利用虛擬機(jī)動態(tài)遷移中的預(yù)拷貝算法進(jìn)行內(nèi)存遷移主要分為三個步驟(見圖1):預(yù)遷移階段、迭代拷貝階段和停機(jī)拷貝階段[10-11]。
圖1 虛擬機(jī)動態(tài)遷移
(1)預(yù)遷移階段:實時遷移開始,對需要遷移的虛擬機(jī)的內(nèi)存頁進(jìn)行實時監(jiān)控,選擇遷移的目的主機(jī),并且預(yù)定資源。
(2)迭代拷貝階段:虛擬機(jī)保持運(yùn)行狀態(tài)的同時,通過迭代的方式將內(nèi)存頁從源主機(jī)傳送到目的主機(jī)上。首輪傳送所有的內(nèi)存頁,以后每輪則傳送上一輪拷貝過程中變更的頁。迭代結(jié)束的條件為迭代輪數(shù)是否超過閾值(默認(rèn)設(shè)定為30)或迭代過程中被修改的頁數(shù)是否超過閾值(默認(rèn)設(shè)定為50)。滿足條件則進(jìn)入下面的停機(jī)階段。
(3)停機(jī)拷貝階段:該階段源主機(jī)上的虛擬機(jī)停止運(yùn)行,拷貝全部剩余的內(nèi)存頁以及CPU、I/O狀態(tài),傳送到目的主機(jī),傳輸完成后目的主機(jī)上的虛擬機(jī)開始運(yùn)行。
2.2 預(yù)拷貝算法性能
對于預(yù)拷貝算法在高負(fù)載場景下的性能分析如下:
設(shè)總的遷移時間為Ttotal,總的遷移時間反映了整個實時遷移的效率。設(shè)第一輪傳送內(nèi)存頁的時間為Tfirst,迭代傳送臟頁的時間為Titer,停機(jī)時間為Td。停機(jī)時間反映了服務(wù)程序運(yùn)行的連續(xù)性??偟倪w移時間表示為:
Ttotal=Tfirst+Titer+Td
(1)
設(shè)虛擬機(jī)內(nèi)存分頁大小為M,分頁數(shù)為N。第i輪迭代傳送中需要傳送的內(nèi)存頁數(shù)為n,內(nèi)存頁變臟的程度組成的集合為D={d1,d2,…,dn},每輪迭代傳輸?shù)膬?nèi)存為Mi,所以每輪迭代的時間表示為:
(2)
則Tfirst、Titer可以表示為:
Tfirst=NM/B
(3)
(4)
根據(jù)式(2)~(4)可得:
(5)
從上面幾個公式中可以看出,在高負(fù)載場景下,由于服務(wù)程序會不斷地產(chǎn)生臟頁面,虛擬機(jī)需要不斷地重復(fù)傳送這些內(nèi)存頁,使得迭代中傳送的內(nèi)存變大,Titer的時間過長,總的遷移時間Ttotal受到嚴(yán)重影響,進(jìn)而使得動態(tài)遷移的性能低下[12-13]。
根據(jù)上述分析可知,在高負(fù)載場景下,臟頁面的重復(fù)傳輸會影響動態(tài)遷移的性能,因此文中將在迭代中被修改的內(nèi)存頁定義為臟頁,內(nèi)存頁修改程度定義為某個頁面的臟頁率。如果對迭代階段的內(nèi)存頁使用預(yù)測算法,預(yù)測出下輪迭代中內(nèi)存頁狀態(tài)修改的程度,只傳輸臟頁率低的內(nèi)存頁,這樣便能減少臟頁面的重傳,從而減少迭代階段的時間,提高動態(tài)遷移的性能。
3.1 預(yù)測算法
在迭代拷貝階段對內(nèi)存頁的修改進(jìn)行監(jiān)視,統(tǒng)計之前每個內(nèi)存頁修改的程度構(gòu)成時間序列。文中使用動態(tài)指數(shù)平滑法預(yù)測下一輪迭代中頁面的修改程度,預(yù)測是否需要傳送這些內(nèi)存頁。
動態(tài)指數(shù)平滑法[14]是短期時間序列預(yù)測分析法,通過對時間序列進(jìn)行平滑計算,去除隨機(jī)因素的影響,文中采用二次指數(shù)平滑法,預(yù)測目標(biāo)的下一輪變化值。動態(tài)指數(shù)平滑法需要的數(shù)據(jù)量少,短期預(yù)測精度符合動態(tài)遷移的高負(fù)載場景。
待傳輸臟頁是通過統(tǒng)計短期的歷史數(shù)據(jù),使用動態(tài)指數(shù)平滑法預(yù)測得到。設(shè)V={v1,v2,…,vn}是內(nèi)存頁在各輪迭代過程中每個內(nèi)存頁的臟頁率組成的時間序列,使用一次平滑法在第n輪迭代的一次指數(shù)平滑值為:
(6)
利用一次平滑指數(shù)計算可以計算出二次平滑指數(shù):
(7)
所以第n+1輪的迭代預(yù)測值公式為:
(8)
為了提高臟頁率預(yù)測的準(zhǔn)確度,需要在每輪迭代拷貝時確定平滑系數(shù)α的最優(yōu)值。文中采用0.168優(yōu)選法[15]確定最佳平滑系數(shù),并且使用平均絕對相對誤差(MARE)作為預(yù)測α的目標(biāo)函數(shù),確定最優(yōu)平滑系數(shù)。
(9)
通過式(9)采用0.168優(yōu)選法可以求出α的精確值,其流程如圖2所示。
圖2 平滑系數(shù)α流程
3.2 基于預(yù)測臟頁的內(nèi)存預(yù)拷貝
在原預(yù)拷貝中,使用to_skip,to_send和to_fix三種頁位圖來描述頁面的狀態(tài)[16]。to_skip是用來標(biāo)識在本輪迭代弄臟的頁,可以跳過不傳送的內(nèi)存頁;to_send是用來標(biāo)識在上一輪迭代中出現(xiàn)的臟頁,即在本輪迭代要傳送的內(nèi)存頁;to_fix是用來表示還沒有被映射到的內(nèi)存頁,在最后階段會去傳送這些內(nèi)存頁。
文中引入Page_table,to_dirty_table和to_send_last三種頁位圖,用來標(biāo)識內(nèi)存頁的狀態(tài)。Page_table是用來記錄每個內(nèi)存頁的臟頁率;to_dirty_table是用來存放每個內(nèi)存頁的編號,以及每個內(nèi)存頁利用動態(tài)指數(shù)平滑法預(yù)測出下一輪迭代中內(nèi)存頁的臟頁率,之后把低于設(shè)定閾值的內(nèi)存頁傳入to_skip頁位圖中;to_send_last用來標(biāo)識在預(yù)測出的臟頁中,內(nèi)存頁的臟頁率過高,應(yīng)該在停機(jī)階段再傳送的內(nèi)存頁。除了頁位圖外,文中還引入了關(guān)鍵參數(shù)P0和P1。P0表示內(nèi)存頁是否在本輪迭代中傳送的閾值,小于P0時內(nèi)存頁則是本輪迭代需要傳送的頁;P1是判斷為高臟頁率的閾值,當(dāng)預(yù)測值大于P1時,則是需要在停機(jī)階段才傳送的內(nèi)存頁。
文中的停機(jī)條件為傳輸?shù)膬?nèi)存頁小于閾值和迭代的輪數(shù)不能超過設(shè)定的閾值,圖3給出了具體實現(xiàn)。優(yōu)化后的虛擬機(jī)內(nèi)存遷移的步驟為:
(1)在預(yù)遷移階段,每隔時間T記錄內(nèi)存頁的修改次數(shù)保存到Page_table中。
(2)迭代開始,第一輪傳送所有的內(nèi)存頁,并將監(jiān)控到的每個內(nèi)存頁修改的信息記錄到Page_table中。
(3)下輪迭代開始時,將內(nèi)存頁的信息以及預(yù)測內(nèi)存頁臟頁率的信息寫入to_dirty_table中。
(4)將to_dirty_table中預(yù)測值小于P0的內(nèi)存頁寫入to_send頁位圖中,即本輪迭代需要傳送的頁面。
(5)將to_dirty_table中預(yù)測值大于P1的內(nèi)存頁寫入to_send_last頁位圖中,即最后停機(jī)階段傳送的內(nèi)存頁。
(6)預(yù)測結(jié)束后,更新to_dirty_table,將預(yù)測值大于P0的內(nèi)存頁,即為本輪迭代不傳送的頁面寫入to_skip中。
(7)將to_skip與to_send中的內(nèi)存頁進(jìn)行比較,跳過同時出現(xiàn)在2個頁位圖中的內(nèi)存頁,傳輸to_send中剩余的頁。
(8)本輪迭代結(jié)束,判斷是否滿足停機(jī)條件,滿足則進(jìn)入停機(jī)拷貝階段,不滿足則轉(zhuǎn)入3,進(jìn)行下一輪迭代。
以上是優(yōu)化后的迭代階段的步驟,使用動態(tài)指數(shù)平滑算法可以有效地測定臟頁工作集,根據(jù)預(yù)測值減少臟頁的重復(fù)傳送,提前進(jìn)入停機(jī)拷貝階段,縮短了總的動態(tài)遷移時間。
圖3 內(nèi)存遷移具體實現(xiàn)
文中通過實驗對比的方式來評估基于臟頁預(yù)測的內(nèi)存遷移的性能,將預(yù)拷貝算法的迭代次數(shù)、停機(jī)時間以及總遷移時間作為性能指標(biāo),與臟頁預(yù)測算法的內(nèi)存遷移進(jìn)行比較。
4.1 實驗環(huán)境及方法
實驗中使用了三臺硬件配置相同的物理機(jī),它們的主要配置為8 G內(nèi)存、500 G硬盤,CPU為Intel Core 2.93 GHz以及100 Mbits/s網(wǎng)絡(luò)帶寬。虛擬平臺為Xen3.4.3,虛擬機(jī)的操作系統(tǒng)為Centos7.0,通過局域網(wǎng)相連。其中一臺作為NFS服務(wù)器用于提供虛擬機(jī)的共享存儲,另外兩臺作為實時遷移的源主機(jī)和目的主機(jī)。在預(yù)拷貝算法中設(shè)定的停機(jī)閾值為50個臟頁或30輪迭代。
實驗時在源物理機(jī)上創(chuàng)建4個虛擬機(jī),內(nèi)存分別是256 M、512 M、1 024 M以及2 048 M。使用原預(yù)拷貝算法和預(yù)測臟頁迭代拷貝機(jī)制進(jìn)行實驗,比較兩種方法的性能。首先是在無負(fù)載的場景下分別對兩種算法進(jìn)行實驗,其中記錄的數(shù)據(jù)有迭代次數(shù)、停機(jī)時間以及總遷移時間,分別測試20組計算它們的平均值。然后在高負(fù)載的情況下使用兩種方法進(jìn)行動態(tài)遷移,同樣分別測試20組計算平均值,比較數(shù)據(jù)得出結(jié)論。
文中采用動態(tài)指數(shù)平滑法,實驗中對于滑動指數(shù)α不需要設(shè)置為固定值,這樣可以提高預(yù)測的實時性和精確度。動態(tài)指數(shù)平滑法在每一輪迭代對內(nèi)存頁的狀態(tài)修改次數(shù)預(yù)測時,會先根據(jù)當(dāng)前的時間序列值確定本次預(yù)測使用的滑動指數(shù)α的最優(yōu)值,通過式(8)得到之前的序列的各個預(yù)測值,帶入式(9)構(gòu)建的目標(biāo)函數(shù)中,最后得出α的最優(yōu)值。
4.2 實驗結(jié)果及分析
在無負(fù)載場景下的實驗結(jié)果對比如圖4所示。
圖4 無負(fù)載場景遷移時間對比
從上面實驗數(shù)據(jù)中可以看出,在無負(fù)載情況下,改進(jìn)的內(nèi)存遷移算法與預(yù)拷貝算法在時間上比較接近,改進(jìn)后的算法在遷移總時間上略優(yōu)于預(yù)拷貝算法,但是優(yōu)越性還不明顯。
在高負(fù)載場景下的實驗結(jié)果對比如圖5所示。
高負(fù)載場景下,優(yōu)化后的迭代算法的遷移時間比預(yù)拷貝算法明顯減少,由于臟頁預(yù)測算法將高頻臟頁放入to_send_last中在最后一輪傳送,所以優(yōu)化后的算法在停機(jī)時間上略微變長,但是總的遷移時間明顯下降,提高了動態(tài)遷移的效率。
綜上所述,在無負(fù)載或低負(fù)載的場景下,臟頁預(yù)測算法與預(yù)拷貝算法在性能上的差別不大;但是在高負(fù)載場景下,臟頁預(yù)測算法的優(yōu)越性表現(xiàn)突出,提升了動態(tài)遷移的性能。
圖5 高負(fù)載場景總遷移時間對比
文中分析了動態(tài)遷移中的迭代拷貝機(jī)制,對于臟頁的重復(fù)傳送現(xiàn)象,提出了臟頁預(yù)測算法的動態(tài)遷移,通過對比實驗數(shù)據(jù)驗證了算法在高負(fù)載場景下的優(yōu)越性。下一步將繼續(xù)優(yōu)化動態(tài)遷移的性能,對網(wǎng)絡(luò)帶寬以及停機(jī)時間在動態(tài)遷移中存在的不足進(jìn)行進(jìn)一步的優(yōu)化。
[1] 韓德志,李楠楠,畢 坤.云環(huán)境下的虛擬化技術(shù)探析[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2012,40(S1):262-265.
[2] 熊安萍,徐曉龍.基于內(nèi)存迭代拷貝的Xen虛擬機(jī)動態(tài)遷移機(jī)制研究[J].計算機(jī)科學(xué),2013,40(8):63-65.
[3] 崔 勇,林予松,李潤知,等.虛擬機(jī)實時遷移中自適應(yīng)閾值機(jī)制的研究[J].小型微型計算機(jī)系統(tǒng),2015,36(3):466-470.
[4] Clark C,Fraser K,Hand S,et al.Live migration of virtual machines[C]//Proceedings of the 2nd conference on networked systems design and implementation.[s.l.]:[s.n.],2005:273-286.
[5] 孫 昱.虛擬機(jī)Xen及其實時遷移技術(shù)研究[D].上海:上海交通大學(xué),2008.
[6] 阮 敏.Xen環(huán)境下實時遷移結(jié)構(gòu)和算法研究[D].大連:大連海事大學(xué),2009.
[7] 陳 陽,懷進(jìn)鵬,胡春明.基于內(nèi)存混合復(fù)制方式的虛擬機(jī)在線遷移機(jī)制[J].計算機(jī)學(xué)報,2011,34(12):2279-2291.
[8] 孫國飛,谷建華,胡金華,等.基于預(yù)拷貝的虛擬機(jī)動態(tài)內(nèi)存遷移機(jī)制改進(jìn)[J].計算機(jī)工程,2011,37(13):36-39.
[9] Jin H,Deng L,Wu S,et al.Live virtual machine migration with adaptive memory compression[C]//Proceedings of the 2009 IEEE international conference on cluster computing.[s.l.]:IEEE,2009:1-10.
[10] 陳廷偉,姜雅楠.基于概率預(yù)測的改進(jìn)虛擬機(jī)內(nèi)存預(yù)拷貝方法[J].計算機(jī)工程,2015,41(7):289-293.
[11] 張 偉,張曉霞,王汝傳.一種基于臟頁面延遲拷貝的虛擬機(jī)動態(tài)內(nèi)存遷移方法[J].計算機(jī)科學(xué),2013,40(5):126-130.
[12] Amani A,Zamanifar K.Improving the time of live migration virtual machine by optimized algorithm scheduler[C]//Proc of international conference on computer and knowledge engineering.[s.l.]:[s.n.],2014.
[13] Franciso J,Enrique S.Adaptive downtime for live migration of virtual machines[C]//Proc of international conference on utility and cloud computing.[s.l.]:[s.n.],2014.
[14] 張中平.指數(shù)平滑法[M].北京:中國統(tǒng)計出版社,1996:36-49.
[15] 馮金巧,楊兆升,張 林,等.一種自適應(yīng)指數(shù)平滑動態(tài)預(yù)測模型[J].吉林大學(xué)學(xué)報:工學(xué)版,2007,37(6):1284-1287.
[16] Sharma S,Chawla M.A technical review for efficient virtual machine migration[C]//Proc of international conference on cloud & ubiquitous computing & emerging technologies.[s.l.]:[s.n.],2013.
Research on Live Migration of Virtual Machine
WEI Zhi-gang,HUANG Gang
(School of Computer Science and Technology,School of Software,Nanjing University of Posts and Telecommunications,Nanjing 210003,China)
Live migration technology of virtual machine is to finish the migration copy of virtual machine from the source physical host to another,which plays an important role in load balancing and disaster recovery.The live migration is realized by pre-copy,but in the case of high workload,some memory pages will be transmitted over and over again,which affects processing performance seriously and extends the total migration time.For this problem,a dirty page prediction algorithm is proposed which is used to predict the dirty page by dynamic exponential smoothing method,reducing the repeated transmission of dirty pages.For dirty page with high frequency,directly into the final copy down the transmission,the number of live migration time is reduced and the efficiency of migration is improved.Experiment results show that the improved algorithm can effectively rise the performance of virtual machine migration in high scenarios.
live migration;pre-copy;dirty pages;total migration time
2015-12-31
2016-04-27
時間:2016-09-19
國家自然科學(xué)基金資助項目(61171053)
魏志剛(1991-),男,碩士研究生,研究方向為云計算與物聯(lián)網(wǎng)技術(shù);黃 剛,教授,研究生導(dǎo)師,研究方向為海量數(shù)據(jù)管理、云計算、物聯(lián)網(wǎng)、P2P等網(wǎng)絡(luò)計算環(huán)境下海量數(shù)據(jù)的存儲、索引、查詢和智能分析技術(shù),移動商務(wù)平臺設(shè)計開發(fā)。
http://www.cnki.net/kcms/detail/61.1450.TP.20160919.0841.028.html
TP301
A
1673-629X(2016)10-0013-05
10.3969/j.issn.1673-629X.2016.10.025