999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)

2016-07-18 11:49:26鄒慶欣郝志宇云曉春1
通信學(xué)報(bào) 2016年1期
關(guān)鍵詞:方法

鄒慶欣,郝志宇,云曉春1,

?

基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)

鄒慶欣1,2,3,郝志宇3,云曉春1,3

(1. 中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100190;2. 中國(guó)科學(xué)院大學(xué),北京100049;3. 中國(guó)科學(xué)院信息工程研究所,北京100193)

針對(duì)預(yù)拷貝算法在起始、迭代、結(jié)尾3個(gè)階段所表現(xiàn)出的不同特點(diǎn),提出了基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)(LMCOS, live migration based on the characteristics of the operation stages)。起始階段引入比對(duì)初始內(nèi)存頁(yè)的變量傳輸技術(shù)以避免未改變內(nèi)存部分的傳輸;迭代階段引入計(jì)數(shù)排序傳輸方法以減少內(nèi)存頁(yè)的重傳;結(jié)尾階段引入調(diào)減虛擬機(jī)CPU時(shí)間片的策略以縮短停機(jī)時(shí)間。與預(yù)拷貝算法相比,LMCOS使停機(jī)時(shí)間平均減少53%,總遷移時(shí)間平均減少65%。

實(shí)時(shí)遷移;預(yù)拷貝;運(yùn)行階段特征;虛擬機(jī)

1 引言

步入云計(jì)算、大數(shù)據(jù)時(shí)代,虛擬化技術(shù)得到了前所未有的應(yīng)用。虛擬化技術(shù)使擁有全部硬件特征的虛擬機(jī)在彼此隔離的情況下能夠同時(shí)在一臺(tái)物理機(jī)器上運(yùn)行,極大地增加了物理資源的利用率。虛擬機(jī)是虛擬化技術(shù)一個(gè)最直接而且集中的體現(xiàn)。

在虛擬機(jī)諸多技術(shù)中,實(shí)時(shí)遷移技術(shù)無(wú)疑是一項(xiàng)卓越而實(shí)用的服務(wù)。虛擬機(jī)實(shí)時(shí)遷移技術(shù)在保證虛擬機(jī)工作負(fù)載正常運(yùn)行的情況下,使其在不同的物理主機(jī)之間可以自由地穿梭。虛擬機(jī)實(shí)時(shí)遷移有廣域網(wǎng)遷移和局域遷移之分。在廣域網(wǎng)遷移中不僅要遷移虛擬機(jī)內(nèi)存,還要遷移虛擬機(jī)的磁盤鏡像文件及網(wǎng)絡(luò)狀態(tài)等。而局域網(wǎng)遷移,則可以不必遷移虛擬機(jī)磁盤鏡像文件等,完全可以利用NFS等服務(wù)采用共享的方式。本文主要研究局域網(wǎng)遷移中的內(nèi)存遷移。

在虛擬機(jī)局域網(wǎng)內(nèi)存遷移技術(shù)中,預(yù)拷貝算法是最常用,也是最實(shí)用的算法之一。對(duì)于使用預(yù)拷貝算法的虛擬機(jī)實(shí)時(shí)遷移來(lái)說(shuō),主要有2個(gè)衡量指標(biāo):總遷移時(shí)間和停機(jī)時(shí)間。顧名思義,總遷移時(shí)間是指從源主機(jī)上首次發(fā)送內(nèi)存頁(yè)開(kāi)始到虛擬機(jī)在目標(biāo)機(jī)器上重新啟動(dòng)運(yùn)行所需的時(shí)間;而停機(jī)時(shí)間的產(chǎn)生則是因?yàn)槟壳暗乃袑?shí)時(shí)遷移技術(shù)并不能保證完全的實(shí)時(shí)性,在遷移的過(guò)程中都需要有一段虛擬機(jī)停頓時(shí)間。只有停機(jī)時(shí)間等于零,才是真正意義上的實(shí)時(shí)遷移。但是停機(jī)時(shí)間為零是極其困難的,通常是盡量短而使從虛擬機(jī)使用者的角度來(lái)看幾乎察覺(jué)不到。

總遷移時(shí)間和停機(jī)時(shí)間的產(chǎn)生是從源主機(jī)到目的主機(jī)傳輸內(nèi)存頁(yè)的多少及相關(guān)內(nèi)部算法等共同作用的結(jié)果。本文通過(guò)深入分析預(yù)拷貝算法的工作原理,根據(jù)其在不同運(yùn)行階段所體現(xiàn)的特征,有針對(duì)性地采取相應(yīng)策略以改進(jìn)預(yù)拷貝算法:在起始階段引入比對(duì)初始內(nèi)存頁(yè)的變量傳輸技術(shù)以減少數(shù)據(jù)的傳輸量;在迭代階段引入計(jì)數(shù)排序技術(shù)以減少高頻變化內(nèi)存頁(yè)的多次傳輸;在結(jié)尾階段引入調(diào)減虛擬機(jī)CPU時(shí)間片方法以獲得更短的停機(jī)時(shí)間。通過(guò)以上基于運(yùn)行階段特征技術(shù)的運(yùn)用,使虛擬機(jī)在運(yùn)行不同工作負(fù)載的情況下同時(shí)減少總遷移時(shí)間和停機(jī)時(shí)間,顯著提高了虛擬機(jī)實(shí)時(shí)遷移的性能。

2 相關(guān)工作

自文獻(xiàn)[1]首次提到虛擬機(jī)實(shí)時(shí)遷移以來(lái),研究人員對(duì)這個(gè)問(wèn)題給予了極大關(guān)注。尤其是在內(nèi)存遷移方面,相關(guān)研究工作不斷進(jìn)展,并且內(nèi)存遷移的相關(guān)工作也常常對(duì)虛擬化相關(guān)的其他研究方向產(chǎn)生重大影響。可以說(shuō),虛擬機(jī)內(nèi)存實(shí)時(shí)遷移是虛擬化技術(shù)中一個(gè)非常重要的基礎(chǔ)技術(shù)。

在針對(duì)內(nèi)存的虛擬機(jī)實(shí)時(shí)遷移過(guò)程中,除了預(yù)拷貝算法以外,文獻(xiàn)[2]提出了后拷貝算法,與預(yù)拷貝方式相反,后拷貝技術(shù)首先從源主機(jī)端發(fā)送CPU狀態(tài)和虛擬機(jī)能夠恢復(fù)運(yùn)行的最小工作集到目標(biāo)主機(jī),然后虛擬機(jī)在目標(biāo)主機(jī)端被重啟。隨后,虛擬機(jī)在目標(biāo)主機(jī)端啟動(dòng)運(yùn)行過(guò)程中,其所需的但并不存在于目標(biāo)主機(jī)的內(nèi)存頁(yè)從源主機(jī)端被請(qǐng)求或被推送過(guò)來(lái)。與預(yù)拷貝方式相比,后拷貝算法減少了總遷移時(shí)間,但卻增加了停機(jī)時(shí)間。借鑒于各自的優(yōu)缺點(diǎn)文獻(xiàn)[3]實(shí)現(xiàn)了內(nèi)存混合復(fù)制方式的虛擬機(jī)實(shí)時(shí)遷移機(jī)制。其依次執(zhí)行全內(nèi)存同步,內(nèi)存位圖同步,和臟內(nèi)存同步3個(gè)過(guò)程,與預(yù)拷貝算法相比,該機(jī)制同時(shí)降低了停機(jī)時(shí)間和總遷移時(shí)間。

文獻(xiàn)[4]基于日志采用檢查點(diǎn)/恢復(fù)和跟蹤/重放的技術(shù)提供了快速、透明的虛擬機(jī)實(shí)時(shí)遷移方法。執(zhí)行軌跡在源主機(jī)端被記錄,并采用同步算法實(shí)現(xiàn)執(zhí)行軌跡記錄數(shù)據(jù)從源虛擬機(jī)到目標(biāo)虛擬機(jī)的傳輸,直到他們到達(dá)一致的狀態(tài)。該機(jī)制能夠大幅度地減少遷移的停機(jī)時(shí)間和網(wǎng)絡(luò)帶寬消費(fèi),而且類似于預(yù)拷貝算法,傳輸?shù)牟皇莾?nèi)存而是日志,因此數(shù)據(jù)傳輸量較小,但實(shí)現(xiàn)相對(duì)比較復(fù)雜。

一種基于多線程技術(shù)的限制時(shí)間的虛擬機(jī)實(shí)時(shí)遷移機(jī)制在文獻(xiàn)[5]中實(shí)現(xiàn),類似于只采取2輪策略的預(yù)拷貝算法,先傳輸整個(gè)內(nèi)存頁(yè),再停機(jī)拷貝所有變臟的內(nèi)存頁(yè)。所不同的是其采用了2個(gè)線程并行傳輸,第一個(gè)線程從頭至尾傳輸所有內(nèi)存頁(yè),同時(shí)另一個(gè)線程傳輸變臟的內(nèi)存頁(yè),當(dāng)?shù)谝粋€(gè)線程結(jié)束時(shí),遵循時(shí)間限制,立刻進(jìn)入停機(jī)階段。

以上討論的虛擬機(jī)實(shí)時(shí)遷移方面的工作可以說(shuō)是對(duì)預(yù)拷貝機(jī)制的有力擴(kuò)充。而專門針對(duì)預(yù)拷貝算法的改進(jìn)工作也有相關(guān)的研究。

在文獻(xiàn)[6]中,根據(jù)每個(gè)內(nèi)存頁(yè)自身的特點(diǎn)而采用的適應(yīng)性內(nèi)存壓縮技術(shù)被應(yīng)用在預(yù)拷貝機(jī)制的虛擬機(jī)實(shí)時(shí)遷移過(guò)程中。每一輪中發(fā)送的內(nèi)存頁(yè)首先在源主機(jī)端被壓縮,然后再發(fā)送到目標(biāo)主機(jī)。目標(biāo)主機(jī)收到后進(jìn)行解壓縮,從而大幅減少了數(shù)據(jù)傳輸量。該研究工作中采用16個(gè)單詞的字典,并根據(jù)字典中單詞在內(nèi)存頁(yè)中出現(xiàn)的次數(shù)來(lái)區(qū)分每個(gè)內(nèi)存頁(yè)是高單詞相似的,還是低單詞相似的。對(duì)于高單詞相似性的內(nèi)存頁(yè)采用類似WKdm機(jī)制的壓縮算法,而對(duì)于低單詞相似性的則采用類似LZO機(jī)制的壓縮算法,同時(shí)高相似性和低相似性內(nèi)存頁(yè)的界限是動(dòng)態(tài)變化的。文獻(xiàn)[7]也提出了壓縮的方式,所不同的是,采用的比較對(duì)象不同,它并不是每個(gè)內(nèi)存頁(yè)和字典里的單詞做比較,而是不同內(nèi)存頁(yè)之間做比較,有些內(nèi)存頁(yè)是相同的或高相似的,這樣的話,選擇一個(gè)參考頁(yè)做基礎(chǔ),同時(shí)利用游程編碼,傳輸與參考頁(yè)不同的部分,從而減少數(shù)據(jù)量的傳輸,而參考頁(yè)的選取則采用散列指紋的方法。這2篇文章的工作雖然都采用了多線程的技術(shù)以提高算法的效率。但實(shí)驗(yàn)結(jié)果中總遷移時(shí)間的改進(jìn)程度,大幅地低于總傳輸?shù)臄?shù)據(jù)量減少的程度,這說(shuō)明壓縮算法很耗時(shí)。文獻(xiàn)[8]中也采用了壓縮的技術(shù),主要側(cè)重于前后兩輪同一個(gè)內(nèi)存頁(yè)的比較,也就是傳輸后一輪和前一輪不同的部分。不過(guò)這種方法,要維護(hù)一個(gè)緩存來(lái)存儲(chǔ)上一輪的內(nèi)存頁(yè)。但是緩存不能覆蓋全部的內(nèi)存頁(yè),而且該算法對(duì)第一輪發(fā)送的內(nèi)存頁(yè)不起作用。文獻(xiàn)[9]把虛擬機(jī)內(nèi)存頁(yè)分成已分配的和未分配的2種,對(duì)于未分配的不予傳輸,但需要依賴虛擬機(jī)內(nèi)存分配機(jī)制設(shè)計(jì)一個(gè)代理模塊執(zhí)行內(nèi)存探索功能。同時(shí)對(duì)于已經(jīng)分配的,根據(jù)這些內(nèi)存頁(yè)之間的相似性,采用游程編碼壓縮的方式進(jìn)行傳輸,起不到壓縮作用的則傳輸原來(lái)的頁(yè)面。總之,上述4篇文章工作過(guò)程復(fù)雜,本身計(jì)算量大。

針對(duì)預(yù)拷貝算法,文獻(xiàn)[10]提出了有序的傳輸變臟的內(nèi)存頁(yè)的思路。但是記錄每個(gè)內(nèi)存頁(yè)的重寫率幾乎是不可能的,因此把內(nèi)存頁(yè)分成組,使用統(tǒng)計(jì)的取樣方法和內(nèi)存組對(duì)重寫率進(jìn)行近似。當(dāng)?shù)惠喗Y(jié)束的時(shí)候,它統(tǒng)計(jì)每個(gè)內(nèi)存組變臟的內(nèi)存頁(yè)的個(gè)數(shù)。然后用個(gè)數(shù)值除以這一輪持續(xù)的時(shí)間。所得的結(jié)果就是內(nèi)存組的重寫率。這種方法有效地減少了停機(jī)時(shí)間,但算法時(shí)間較長(zhǎng),在有些情況下會(huì)造成總遷移時(shí)間的增加。文獻(xiàn)[11]是在文獻(xiàn)[8]上做的改進(jìn),在原有的壓縮上融合了按順序傳輸?shù)南敕āN墨I(xiàn)[12]是本課題組提出的計(jì)數(shù)排序的方法,該方法根據(jù)內(nèi)存頁(yè)變臟的次數(shù)不大于最大迭代輪數(shù)的特點(diǎn),采用時(shí)間復(fù)雜度為()的計(jì)數(shù)排序的算法,使內(nèi)存頁(yè)根據(jù)變臟的次數(shù)由低至高傳輸,同時(shí)減少了停機(jī)時(shí)間和總遷移時(shí)間。

文獻(xiàn)[13]從調(diào)整虛擬機(jī)CPU數(shù)量的角度來(lái)進(jìn)行預(yù)拷貝算法的改進(jìn),但得保證虛擬機(jī)CPU的數(shù)量大于1。文獻(xiàn)[14]通過(guò)調(diào)整虛擬機(jī)CPU運(yùn)行的時(shí)間片來(lái)改進(jìn)預(yù)拷貝算法,通過(guò)降低虛擬機(jī)在被遷移過(guò)程中的運(yùn)行性能來(lái)達(dá)到減少變臟內(nèi)存頁(yè)數(shù)量的目的。該方法通過(guò)比較相鄰兩輪的內(nèi)存頁(yè)變臟率來(lái)動(dòng)態(tài)調(diào)整CPU時(shí)間片縮減的幅度。文獻(xiàn)[15]和文獻(xiàn)[14]類似,但縮減幅度的動(dòng)態(tài)調(diào)整依據(jù)為相鄰2輪需傳輸內(nèi)存頁(yè)的絕對(duì)數(shù)量差值,以每5 000個(gè)內(nèi)存頁(yè)對(duì)應(yīng)5%的增減幅度,但該方法對(duì)于每次變化不足5 000頁(yè)面的低負(fù)載場(chǎng)景就不適用了。采用調(diào)整虛擬機(jī)CPU方式改進(jìn)預(yù)拷貝算法最直接的影響就是會(huì)對(duì)虛擬機(jī)的應(yīng)用程序產(chǎn)生干擾,從而嚴(yán)重影響虛擬機(jī)使用者的用戶體驗(yàn)。

3 預(yù)拷貝算法及其運(yùn)行階段劃分

從虛擬機(jī)的角度來(lái)看,虛擬機(jī)的內(nèi)存是連續(xù)的,實(shí)際上每個(gè)虛擬機(jī)內(nèi)存頁(yè)被監(jiān)視器分散地映射到虛擬機(jī)所在的物理主機(jī)上。預(yù)拷貝算法就是保證虛擬機(jī)在運(yùn)行的同時(shí),把映射到物理主機(jī)上真實(shí)的內(nèi)存頁(yè)傳送到目的主機(jī)。

圖1描述了預(yù)拷貝算法的執(zhí)行過(guò)程[12]。從圖1中可以看到預(yù)拷貝算法試圖最小化在最后一輪中傳輸?shù)膬?nèi)存頁(yè),以保證停機(jī)時(shí)間盡可能短。在這個(gè)過(guò)程中位于源主機(jī)上的虛擬機(jī)物理內(nèi)存鏡像,通過(guò)網(wǎng)絡(luò)被傳輸?shù)侥康闹鳈C(jī),同時(shí)源主機(jī)持續(xù)運(yùn)行。所以為了保持虛擬機(jī)內(nèi)存狀態(tài)在源和目標(biāo)主機(jī)之間一致,一些發(fā)送到目標(biāo)主機(jī)的內(nèi)存頁(yè),在重新訪問(wèn)修改變臟之后應(yīng)該被再次發(fā)送到目標(biāo)主機(jī)。因此預(yù)拷貝算法用一個(gè)迭代的機(jī)制來(lái)不時(shí)地檢查變臟的內(nèi)存頁(yè)并重傳它們。在前一輪傳送內(nèi)存頁(yè)期間,如果有內(nèi)存頁(yè)又被修改了,則該內(nèi)存頁(yè)會(huì)再次被標(biāo)記為臟,而沒(méi)有被修改的則會(huì)被標(biāo)記為干凈的。實(shí)際上,發(fā)送前一輪變臟的內(nèi)存頁(yè)時(shí),是無(wú)法獲得內(nèi)存頁(yè)在后一輪的狀態(tài)的,只能盡可能取臨近后一輪的狀態(tài)。如果用1表示變臟的狀態(tài),用0表示干凈的狀態(tài),則內(nèi)存頁(yè)的狀態(tài)如表1所示。

表1 內(nèi)存頁(yè)狀態(tài)

僅僅對(duì)10這種組合,預(yù)拷貝算法才發(fā)送內(nèi)存頁(yè)。因?yàn)檫@個(gè)內(nèi)存頁(yè)被修改過(guò),在可見(jiàn)的將來(lái)它不會(huì)被再次修改。對(duì)于其他3種組合,預(yù)拷貝算法不發(fā)送內(nèi)存頁(yè)。對(duì)于11組合來(lái)說(shuō),內(nèi)存頁(yè)過(guò)去被修改了,現(xiàn)在再次被修改,沒(méi)有必要立刻傳送這個(gè)內(nèi)存頁(yè)。對(duì)于00組合來(lái)說(shuō),內(nèi)存頁(yè)沒(méi)有被修改過(guò),并不需要傳送它。對(duì)于01組合來(lái)說(shuō),這個(gè)內(nèi)存頁(yè)過(guò)去沒(méi)有被修改過(guò),但現(xiàn)在已被修改,預(yù)拷貝算法會(huì)在下一輪做進(jìn)一步的判斷。預(yù)拷貝算法將重復(fù)這個(gè)過(guò)程,直到一輪中變臟的內(nèi)存頁(yè)數(shù)小于一個(gè)預(yù)設(shè)的閾值,或迭代過(guò)程達(dá)到最大輪數(shù)或最大數(shù)據(jù)傳輸量,這一輪迭代通常成為臨界輪。在傳輸完臨界輪變臟的內(nèi)存頁(yè)以后,虛擬機(jī)將要被暫停并進(jìn)入最后一輪。

根據(jù)預(yù)拷貝算法運(yùn)行過(guò)程中不同輪次所表現(xiàn)出來(lái)的運(yùn)行特征,可以把預(yù)拷貝算法運(yùn)行過(guò)程分為3個(gè)階段。第1輪和第2輪稱為起始階段,在這一階段會(huì)有較多的內(nèi)存頁(yè)被發(fā)送到目的主機(jī)包括未使用的和變臟率較低的內(nèi)存頁(yè),主要是因?yàn)榈?輪所有內(nèi)存頁(yè)都標(biāo)記為臟的狀態(tài),引起第1輪傳輸?shù)膬?nèi)存頁(yè)相對(duì)較多,傳輸時(shí)間相對(duì)較長(zhǎng),間接地引起第2輪也發(fā)送較多的內(nèi)存頁(yè)。第2輪和臨界輪之間的中間輪稱為迭代階段,這一階段內(nèi)存頁(yè)重復(fù)變臟相對(duì)頻繁,而且不是像第一輪那樣主觀上標(biāo)記為臟的狀態(tài),而是客觀上由于內(nèi)存更改而標(biāo)記為臟的。把臨界輪和最后一輪稱為結(jié)尾階段,主要是兩輪都和停機(jī)時(shí)間有關(guān),臨界輪的狀況關(guān)系到最后一輪傳送內(nèi)存頁(yè)的多少,而最后一輪發(fā)送內(nèi)存頁(yè)的多少直接影響到停機(jī)時(shí)間的長(zhǎng)短。

4 LMCOS算法設(shè)計(jì)

預(yù)拷貝算法分成不同的階段后,由于每一階段運(yùn)行過(guò)程中,分別具有各自階段的鮮明運(yùn)行特征,如果不去考慮不同階段不同運(yùn)行特征對(duì)算法性能產(chǎn)生的影響,而是始終采用同一種方法去處理,必然會(huì)影響整體算法的性能,從而導(dǎo)致針對(duì)某一階段,效果非常好的技術(shù)方法,到了另一階段性能就會(huì)嚴(yán)重下降,甚至產(chǎn)生負(fù)面的影響。而這正是目前絕大多數(shù)相關(guān)研究工作的處理方式。鑒于此,本文提出了基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)LMCOS。在不同運(yùn)行階段,根據(jù)其運(yùn)行特征,引入不同的處理技術(shù),以達(dá)到不同階段遷移性能的局部最大化效應(yīng),最終獲得更優(yōu)異的整體遷移性能。下面將詳細(xì)介紹LMCOS所引入的技術(shù)方法。

4.1 初始階段:引入比對(duì)初始內(nèi)存頁(yè)的變量傳輸技術(shù)

預(yù)拷貝算法的第一輪,所有內(nèi)存頁(yè)都被標(biāo)記為臟的狀態(tài),在虛擬機(jī)創(chuàng)建之初,并為其分配內(nèi)存之前的任何時(shí)刻,虛擬機(jī)管理器通常會(huì)把要分配給虛擬機(jī)的內(nèi)存進(jìn)行初始化,使每一個(gè)內(nèi)存頁(yè)相同。而且每一個(gè)內(nèi)存頁(yè)的每個(gè)字節(jié)也相同。例如通過(guò)分析虛擬化平臺(tái)Xen-4.2.2的源代碼,發(fā)現(xiàn)其利用alloc_domheap_pages函數(shù)為虛擬機(jī)分配內(nèi)存頁(yè)之前,就已經(jīng)利用init_domheap_pages函數(shù)對(duì)內(nèi)存進(jìn)行了初始化工作,該函數(shù)里面使用零字節(jié),初始化每個(gè)內(nèi)存頁(yè),進(jìn)而初始化要分配給虛擬機(jī)的所有內(nèi)存頁(yè)。本文稱像Xen-4.2.2虛擬化平臺(tái)這樣經(jīng)過(guò)初始化的內(nèi)存頁(yè)為初始內(nèi)存頁(yè),這樣的字節(jié)為初始字節(jié)。換句話說(shuō),在Xen-4.2.2虛擬化平臺(tái)上,初始內(nèi)存頁(yè)對(duì)應(yīng)全零頁(yè)面。

隨后在虛擬機(jī)引導(dǎo)操作系統(tǒng)并啟動(dòng)后,初始內(nèi)存頁(yè)將被改動(dòng)。盡管初始內(nèi)存頁(yè)被改動(dòng),但其內(nèi)部死角仍然有可能存在連續(xù)的初始字節(jié)。有大量初始內(nèi)存頁(yè)和改動(dòng)很小的內(nèi)存頁(yè)是初始階段最顯著的特征,虛擬機(jī)內(nèi)存其他方面的數(shù)據(jù)相似性因操作系統(tǒng)和應(yīng)用程序的不同,而有一定的變化。在傳送一個(gè)虛擬機(jī)內(nèi)存頁(yè)之前,可以先跟初始內(nèi)存頁(yè)進(jìn)行比較,只傳送與初始內(nèi)存頁(yè)不同的部分,而相同的部分則沒(méi)有必要傳輸。

圖2給出比對(duì)初始內(nèi)存頁(yè)進(jìn)行變量傳輸?shù)倪^(guò)程,一對(duì)括號(hào)表示一個(gè)字節(jié),括號(hào)內(nèi)是該字節(jié)的數(shù)值。同時(shí)一個(gè)字節(jié)最高位用1即數(shù)值128表示相同的部分,用0表示不同的部分。低7位則表示具體多長(zhǎng)。同時(shí)做一次最基本的比較為4個(gè)字節(jié)。在Xen-4.2.2虛擬化平臺(tái)具體實(shí)現(xiàn)過(guò)程中,針對(duì)“比對(duì)”這一環(huán)節(jié),采用游程編碼進(jìn)行比較,具體如圖3所示。“合成”環(huán)節(jié)則要與“比對(duì)”環(huán)節(jié)執(zhí)行相反的過(guò)程。

off: 臨時(shí)變量;pageoff: 偏離字節(jié)數(shù);copy, iscopy : 標(biāo)識(shí)符;uint32_t: 無(wú)符號(hào)32位整型;(uint32_t)ipage: 初始內(nèi)存頁(yè);( uint32_t)cpage: 待傳內(nèi)存頁(yè);bytes_skipped : 省略的字節(jié)數(shù);complen: 傳送數(shù)據(jù)總長(zhǎng)度;runptr : 待傳內(nèi)存頁(yè)當(dāng)前位置;LENMASK: 值為((char)127);nuint: 單內(nèi)存頁(yè)所含uint32_t個(gè)數(shù);RFLAG: 值為0;SFLAG: 值為(char)128;(char)runlen: 游程長(zhǎng));runbytes: 游程字節(jié)數(shù)。 for (off = 0; off ≤ nuint; off++){ if(off < nuint){ if(cpage[off]!=ipage[off]){copy=1;} if(cpage[off]==ipage[off]){copy=0;} }if(off==nuint){copy =!iscopy;}if (runlen!=0){if ( (iscopy!=copy) or (runlen==LENMASK) ){ runbytes =runlen*sizeof(uint32_t); if(iscopy==1){runlen|=RFLAG;} if(iscopy==0){runlen|=SFLAG;} dest[complen++]=runlen; if (iscopy==1) { pageoff =runptr *sizeof( uint32_t); 從cpage的pageoff處拷貝runbyte個(gè)字節(jié)到dest的complen處,之后調(diào)整complen使其值增加runbytes字節(jié);} else {bytes_skipped+=runbytes;} runlen=0;runptr=off;}} runlen+=1;iscopy=copy;}if (bytes_skipped== runbytes){complen=1 ;dest[0]=0;}傳輸complen和dest到目標(biāo)端

4.2 迭代階段:引入計(jì)數(shù)排序傳輸技術(shù)

進(jìn)入迭代階段以后,隨著輪數(shù)增加,比對(duì)初始內(nèi)存頁(yè)進(jìn)行變量傳輸從而減少數(shù)據(jù)的程度沒(méi)有初始階段高,甚至對(duì)有的內(nèi)存頁(yè)絲毫不起作用,反而帶來(lái)額外的計(jì)算開(kāi)銷。根據(jù)迭代階段有大量重復(fù)傳輸內(nèi)存頁(yè)這一特征。結(jié)合了先前在文獻(xiàn)[12]中所做的貢獻(xiàn),采用時(shí)間復(fù)雜度為()的計(jì)數(shù)排序的方法以減少重復(fù)傳輸?shù)膬?nèi)存頁(yè),同時(shí)還可以抵消“比對(duì)初始內(nèi)存頁(yè)進(jìn)行變量傳輸”失效時(shí)所產(chǎn)生的額外計(jì)算時(shí)間。

由于總體上本文設(shè)計(jì)的算法是一種綜合的算法,所以在這里有必要討論了這2種算法結(jié)合時(shí)相互之間的影響。首先進(jìn)行公式化分析并定義一些變量。

r:平均臟頁(yè)增長(zhǎng)率。

r:平均網(wǎng)絡(luò)傳輸速率。

r:平均計(jì)數(shù)排序速率。

r:平均比對(duì)速率。

:非起始階段非變量?jī)?nèi)存比例取值0到1。

p:起始階段非變量?jī)?nèi)存比例取值0到1。

:計(jì)數(shù)排序減少的內(nèi)存比例取值0到1。

:總內(nèi)存。

t′: 預(yù)拷貝算法第輪時(shí)間。

t:結(jié)合2種算法后第輪所用時(shí)間。

基于上述定義,有如下推導(dǎo):

1=;2=;

3=;t′=;

1=+;

2=r(1?p)+r

3=++;

t=++

在預(yù)拷貝算法不失效的情況下,滿足r<r的條件,同時(shí)在預(yù)拷貝算法的第一輪,全部?jī)?nèi)存頁(yè)都被標(biāo)記為臟的狀態(tài),所以有大量?jī)?nèi)存頁(yè)被傳輸,也包括很多未使用的和初始內(nèi)存頁(yè)完全相同的內(nèi)存頁(yè),而且第一輪傳輸?shù)膬?nèi)存頁(yè)相對(duì)后續(xù)輪傳輸?shù)膬?nèi)存頁(yè),更改不頻繁,所以p相對(duì)較大,有p>成立。要使總遷移時(shí)間(1+2+…+t)≤(1+2+…+t′),同時(shí)使停機(jī)時(shí)間tt′。應(yīng)滿足2個(gè)條件,條件1:1<1和2<2;同時(shí)根據(jù)等比數(shù)列的性質(zhì)還應(yīng)該滿足條件2:<。當(dāng)p>時(shí),條件1成立,同時(shí)條件2可簡(jiǎn)化為<,進(jìn)一步形式轉(zhuǎn)化為<(+–),因?yàn)?<<1,所以<,且< (+–) =(+(1?)),則當(dāng)≥時(shí),不論為何值,條件2始終成立。綜上所述當(dāng)p>,同時(shí)≥時(shí),無(wú)論為何值,結(jié)合2種算法始終可以改進(jìn)預(yù)拷貝算法的性能。

圖4直觀地顯現(xiàn)了與兩者相互關(guān)系。同時(shí)rr除了與CPU相關(guān)外還和算法的時(shí)間復(fù)雜度相關(guān),可見(jiàn)采用快的算法可以使減小,有利于改進(jìn)預(yù)拷貝算法。而計(jì)數(shù)排序的方法和比對(duì)初始內(nèi)存頁(yè)技術(shù)都是時(shí)間復(fù)雜度為()的方法,在網(wǎng)絡(luò)速度和CPU速度一定的情況下,好的算法是至關(guān)重要的。極端情況下,也就是等于0時(shí),比對(duì)初始內(nèi)存頁(yè)技術(shù)會(huì)失效,而計(jì)數(shù)排序的方法由于其自身的性質(zhì)不會(huì)失效。通過(guò)公式分析,當(dāng)達(dá)到一定比率時(shí),即使不起作用,也不會(huì)對(duì)全局造成影響。

4.3 結(jié)尾階段:引入調(diào)減虛擬機(jī)CPU時(shí)間片技術(shù)

當(dāng)臨界輪產(chǎn)生的條件被觸發(fā)以后,預(yù)拷貝算法進(jìn)入了結(jié)尾階段。這一階段的特點(diǎn)就是與停機(jī)時(shí)間直接相關(guān)。最后一輪發(fā)送內(nèi)存頁(yè)的數(shù)量直接決定停機(jī)時(shí)間,同時(shí)臨界輪的狀況又關(guān)系到最后一輪發(fā)送內(nèi)存頁(yè)的多少。減少虛擬機(jī)CPU的運(yùn)行可以使變臟的內(nèi)存頁(yè)減少,但同時(shí)也會(huì)降低虛擬機(jī)自身應(yīng)用程序的性能。基于上述考慮,只在結(jié)尾階段引入調(diào)減虛擬機(jī)CPU時(shí)間片的技術(shù),在減少停機(jī)時(shí)間的同時(shí),又不至于長(zhǎng)時(shí)間影響虛擬機(jī)自身的應(yīng)用程序,從而影響用戶體驗(yàn)。

在Xen-4.2.2虛擬化平臺(tái)上,Credit調(diào)度算法為默認(rèn)的虛擬機(jī)CPU周期調(diào)度算法。文獻(xiàn)[14]中調(diào)整CPU時(shí)間片時(shí)使其不低于20%,同樣把Credit調(diào)度算法的cap參數(shù)取為20,而不是更小值,用以保持一定的虛擬機(jī)性能。

還應(yīng)該注意的是,對(duì)于Xen-4.2.2虛擬化平臺(tái)的全虛擬化客戶機(jī)而言,存在PV-on-HVM形式,即對(duì)于Linux內(nèi)核的全虛擬化客戶機(jī)而言存在半虛擬化驅(qū)動(dòng)。在測(cè)驗(yàn)中發(fā)現(xiàn),臨界輪調(diào)減CPU時(shí)間片的方式不適用這種情況,僅僅適用沒(méi)有半虛擬化的全虛擬化情形。在Xen-4.2.2虛擬化平臺(tái)上,臨界輪調(diào)減虛擬機(jī)時(shí)間片對(duì)于PV-on-HVM形式的虛擬機(jī)來(lái)說(shuō)是不能夠減小停機(jī)時(shí)間的。這也是使用本方法的局限性。

4.4 綜合3種技術(shù)實(shí)現(xiàn)LMCOS算法

綜合以上3種技術(shù),實(shí)現(xiàn)了本文提出的基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)。從迭代的第一輪開(kāi)始,在傳送每一個(gè)內(nèi)存頁(yè)的時(shí)候,就與初始內(nèi)存頁(yè)比較進(jìn)行變量傳輸,同時(shí)從第3輪開(kāi)始對(duì)要傳輸?shù)膬?nèi)存頁(yè),根據(jù)變臟的次數(shù)進(jìn)行計(jì)數(shù)排序傳輸,當(dāng)遇到臨界輪時(shí),把虛擬機(jī)的CPU時(shí)間片降低,用以減少最后一輪變臟的內(nèi)存頁(yè),使停機(jī)時(shí)間縮短。具體算法如圖5所示。

p2m_size: 內(nèi)存頁(yè)數(shù)量;i: 臨時(shí)變量;A[p2m_size]: 內(nèi)存頁(yè)變臟次數(shù);D[p2m_size]: 內(nèi)存頁(yè)原來(lái)位置。if(是第一輪){發(fā)送采用比對(duì)初始內(nèi)存頁(yè)變量傳輸標(biāo)識(shí);}if(大于第一輪){ 記錄變臟的次數(shù)到數(shù)組A中; if(大于第二輪){ 依據(jù)內(nèi)存頁(yè)變臟的次數(shù)進(jìn)行計(jì)數(shù)排序,并把原位置信息存儲(chǔ)在數(shù)組D中;}}if(臨界輪){調(diào)整cpu時(shí)間片為20%;} for(int i=0; i

值得說(shuō)明的是,進(jìn)行臨界輪判斷時(shí)要分開(kāi)判斷,先進(jìn)行最大迭代輪數(shù)或最大數(shù)據(jù)傳輸量的判斷,再進(jìn)行內(nèi)存變臟次數(shù)小于閾值的判斷,并且一旦超過(guò)閾值立即結(jié)束判斷,節(jié)省計(jì)算量,減少負(fù)面效應(yīng)。

通過(guò)這種設(shè)計(jì),多種技術(shù)結(jié)合而且各種方法之間互不影響,互相協(xié)作,同時(shí)又具有針對(duì)性。相信能夠很好地改進(jìn)預(yù)拷貝算法。

5 實(shí)驗(yàn)及分析

為了驗(yàn)證LMCOS算法的有效性,在內(nèi)核版本為3.2.0的64位操作系統(tǒng)Centos-6.4和Xen-4.2.2虛擬化平臺(tái)上實(shí)現(xiàn)了LMCOS算法,并與預(yù)拷貝等算法進(jìn)行了比較。每一個(gè)實(shí)驗(yàn)數(shù)據(jù)是取5次實(shí)驗(yàn)的均值并四舍五入后作為最終的結(jié)果。

5.1 實(shí)驗(yàn)環(huán)境

目標(biāo)主機(jī)和源主機(jī)同為聯(lián)想啟天M4300機(jī)型,CPU同為 Intel(R) Core i3-2120 @ 3.30GZ類型,內(nèi)存同為4 GB。2臺(tái)主機(jī)由一臺(tái)百兆五口的TH-1005T交換機(jī)連接。同時(shí)利用NFS服務(wù)把存在于目標(biāo)主機(jī)上的虛擬機(jī)磁盤映像共享給源主機(jī)。客戶虛擬機(jī)的磁盤文件大小為12 GB運(yùn)行Ubuntu-9.04操作系統(tǒng),并選2.6.28-11-generic內(nèi)核,使客戶虛擬機(jī)沒(méi)有半虛擬化驅(qū)動(dòng)的存在。同時(shí)保持每個(gè)物理主機(jī)最多只有一個(gè)虛擬機(jī)運(yùn)行。

5.2 采用不同工作負(fù)載

實(shí)驗(yàn)中為了驗(yàn)證LMCOS算法的有效性,選擇了5種不同類型的工作負(fù)載。

1) Idle:沒(méi)有特別的應(yīng)用程序在其上面運(yùn)行,這個(gè)場(chǎng)景被用作比較和參考,代表空閑類型應(yīng)用。

2) Nbench:這是一款用來(lái)對(duì)CPU、FPU和內(nèi)存系統(tǒng)進(jìn)行性能測(cè)試的工具。其本身是單進(jìn)程的,實(shí)驗(yàn)中編寫shell腳本同時(shí)循環(huán)運(yùn)行了50個(gè)Nbench 基準(zhǔn)測(cè)試程序,同時(shí)為了避免長(zhǎng)時(shí)間集中于某一項(xiàng)測(cè)試,把調(diào)節(jié)某一項(xiàng)測(cè)試最少運(yùn)行時(shí)間的MINIMUM_ SECONDS參數(shù)由5 s減為1 s。

3) Sysbench:該性能測(cè)試工具可以執(zhí)行CPU、內(nèi)存、數(shù)據(jù)庫(kù)等方面的性能測(cè)試。實(shí)驗(yàn)中配置參數(shù)test=memory來(lái)執(zhí)行內(nèi)存測(cè)試,線程數(shù)為10個(gè),每個(gè)塊大小為768 MB,總傳輸數(shù)據(jù)量為5 GB。

4) Webbench:這是一款網(wǎng)站壓力測(cè)試軟件,它能夠模擬多個(gè)客戶并使用http請(qǐng)求。源主機(jī)配置Tomcat服務(wù)器和一個(gè)50 KB的靜態(tài)網(wǎng)頁(yè),同時(shí)虛擬機(jī)并發(fā)運(yùn)行10個(gè)Webbench客戶請(qǐng)求該網(wǎng)頁(yè)。

5) Dbench:該軟件能夠產(chǎn)生輸入和輸出負(fù)載給一個(gè)文件系統(tǒng)施加壓力,實(shí)驗(yàn)中配置了25個(gè)客戶進(jìn)程來(lái)產(chǎn)生負(fù)載。

測(cè)試中為每個(gè)虛擬機(jī)分配1 GB內(nèi)存,并配置一個(gè)VCPU,同時(shí)測(cè)試了虛擬機(jī)在源端運(yùn)行時(shí)相關(guān)工作負(fù)載的參數(shù)。對(duì)于Idle場(chǎng)景來(lái)說(shuō),沒(méi)有必要測(cè)量,而其他場(chǎng)景都是在Idle場(chǎng)景的基礎(chǔ)上運(yùn)行了特別的應(yīng)用。對(duì)于CPU和內(nèi)存的測(cè)試?yán)昧颂摂M機(jī)操作系統(tǒng)自帶的top工具,而對(duì)于網(wǎng)絡(luò)速率和磁盤的性能分別安裝了iftop和iotop工具進(jìn)行觀測(cè)。具體參數(shù)如表2所示。

表2 各負(fù)載參數(shù)

從CPU角度來(lái)看,大部分情況下,Nbench負(fù)載單進(jìn)程時(shí)就可以占用90%至100%,而其他工作負(fù)載單進(jìn)程時(shí)都沒(méi)能達(dá)到90%,所以Nbench可以代表CPU密集型應(yīng)用;從網(wǎng)絡(luò)流量的角度來(lái)看,只有Webbench這一工作負(fù)載有網(wǎng)絡(luò)流量,而且網(wǎng)速主要集中在60~80 Mbit/s之間,其余場(chǎng)景基本為0,所以Webbench可以代表通信密集型應(yīng)用;從磁盤角度來(lái)看,只有Dbench場(chǎng)景對(duì)磁盤有讀寫操作,而且較高的時(shí)候達(dá)到了20~30 Mbit/s的速率,其余工作負(fù)載幾乎為0,所以Dbench可以代表磁盤密集型應(yīng)用;從內(nèi)存的角度來(lái)看,Sysbech負(fù)載的內(nèi)存利用率最高,大部分情況下達(dá)到了70%到80%,而其他工作負(fù)載的利用率遠(yuǎn)低于Sysbench,所以Sysbench負(fù)載可以代表內(nèi)存密集型應(yīng)用。

5.3 工作負(fù)載測(cè)試

在這一部分,將進(jìn)行各種工作負(fù)載的測(cè)試,并選用了Xen-4.2.2默認(rèn)的30輪預(yù)拷貝算法設(shè)置。在比較預(yù)拷貝算法和本文提出的基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)的同時(shí),也進(jìn)行了拆分,觀察組合成LMCOS算法的計(jì)數(shù)排序的方法和臨界輪調(diào)減虛擬機(jī)CPU時(shí)間片的方法(RTCR, reduce timeslice in critical round),測(cè)試結(jié)果如圖6和圖7所示。

圖6和圖7分別給出了不同算法在不同工作負(fù)載情況下最后一輪和臨界輪內(nèi)存頁(yè)數(shù)量情況的比較結(jié)果。從上面的數(shù)字分析中可以看到,與預(yù)拷貝算法相比,計(jì)數(shù)排序方法、臨界輪和最后一輪發(fā)送的內(nèi)存頁(yè)數(shù)量都不大于預(yù)拷貝算法,計(jì)數(shù)排序的方法主要靠臨界輪發(fā)送的內(nèi)存頁(yè)數(shù)量上的減少而使最后一輪發(fā)送的內(nèi)存頁(yè)的數(shù)量也減少。對(duì)于RTCR方法,臨界輪發(fā)送的內(nèi)存頁(yè)的數(shù)量有時(shí)候比預(yù)拷貝算法還要多,但最后一輪發(fā)送的內(nèi)存頁(yè)數(shù)量卻都不大于預(yù)拷貝算法,進(jìn)一步驗(yàn)證了臨界輪調(diào)減CPU時(shí)間片方法的有效性。

圖8給出了不同工作負(fù)載的停機(jī)時(shí)間。從圖8中可以看出,相比預(yù)拷貝算法,采用LMCOS算法以后停機(jī)時(shí)間均有所下降。同時(shí)LMCOS算法的停機(jī)時(shí)間也優(yōu)于計(jì)數(shù)排序的方法和RTCR方法。說(shuō)明LMCOS算法取得的成效是各種算法綜合的結(jié)果。但是對(duì)于Idle負(fù)載改進(jìn)不大,主要是因?yàn)镮dle負(fù)載、臨界輪和最后一輪發(fā)送的內(nèi)存頁(yè)過(guò)少所致。總之,與預(yù)拷貝算法相比,LMCOS算法使停機(jī)時(shí)間平均減少53%,最少的Idle負(fù)載減少1%,最多的Dbench負(fù)載減少98%。

圖9和圖10分別給出了總傳輸?shù)膬?nèi)存頁(yè)數(shù)和總遷移時(shí)間的比較結(jié)果。從圖9中可以看出計(jì)數(shù)排序的方法可以減少總傳輸?shù)膬?nèi)存頁(yè)個(gè)數(shù),而RTCR方法,則對(duì)總傳輸?shù)膬?nèi)存頁(yè)數(shù)量沒(méi)有必然的影響。同時(shí)可以看到,LMCOS算法對(duì)于總遷移時(shí)間平均減少了65%,最小的減少了48%,最大的減少了89%。LMCOS方法與計(jì)數(shù)排序的方法相比,總傳輸?shù)膬?nèi)存頁(yè)數(shù)有的減少,有的增加,有的相當(dāng)。但總傳輸時(shí)間,卻明顯下降。

以上不同類型的工作負(fù)載的測(cè)試結(jié)果表明,與其他方法相比,LMCOS方法能夠起到一加一大于二的綜合作用效果,同時(shí)減少總遷移時(shí)間和停機(jī)時(shí)間,大幅提高虛擬機(jī)實(shí)時(shí)遷移的性能。

然而在總遷移的內(nèi)存頁(yè)方面,采用LMCOS方法時(shí),Sysbench場(chǎng)景和其他場(chǎng)景相比,出現(xiàn)了很明顯的內(nèi)存頁(yè)增加的情形。不同的工作負(fù)載,由于其訪問(wèn)內(nèi)存方式的不同,雖然都能產(chǎn)生總遷移時(shí)間減少這樣同一結(jié)果,但中間的過(guò)程略有不同。對(duì)于通信密集型和磁盤密集型的應(yīng)用來(lái)說(shuō),訪問(wèn)的內(nèi)存相對(duì)集中,LMCOS保證同時(shí)減少總遷移時(shí)間和停機(jī)時(shí)間的同時(shí),能夠減少總遷移的內(nèi)存頁(yè)數(shù)。而對(duì)于CPU密集型應(yīng)用來(lái)說(shuō),從本次實(shí)驗(yàn)結(jié)果來(lái)看,總遷移的內(nèi)存頁(yè)數(shù)變化很小。但是對(duì)于內(nèi)存密集型的應(yīng)用來(lái)說(shuō),總遷移的內(nèi)存頁(yè)卻大幅度提升,盡管Sysbench工作負(fù)載更改的內(nèi)存頁(yè)數(shù)量較多,但每一個(gè)內(nèi)存頁(yè)更改的比例不是很大,LMCOS方法在總傳輸?shù)膬?nèi)存頁(yè)增多的情況下可以減少總遷移時(shí)間,說(shuō)明LMCOS算法實(shí)質(zhì)上減少了數(shù)據(jù)量的傳輸。從初始階段就使用的比對(duì)初始內(nèi)存頁(yè)技術(shù)發(fā)揮了很大的作用,只傳輸變量部分,從而減少了數(shù)據(jù)傳輸量及總遷移時(shí)間。當(dāng)然這和虛擬機(jī)從啟動(dòng)到執(zhí)行實(shí)時(shí)遷移時(shí),期間運(yùn)行的時(shí)長(zhǎng)也有一定關(guān)系。

同時(shí)把5次實(shí)驗(yàn)迭代的輪數(shù)繪制成圖11,以便于觀察。對(duì)于Idle負(fù)載,無(wú)論哪種方法,都沒(méi)有達(dá)到最大迭代輪數(shù),每次幾乎都是在6輪上下。對(duì)于其他4種負(fù)載,預(yù)拷貝算法都是達(dá)到了最大迭代輪數(shù),而采用本文所提出的LMCOS算法,雖然不能使每一次實(shí)時(shí)遷移的迭代輪數(shù)都在最大輪數(shù)以下,但在最大迭代輪數(shù)以下的現(xiàn)象出現(xiàn)次數(shù)較多。

5.4 不同內(nèi)存測(cè)試

實(shí)際使用中的虛擬機(jī),內(nèi)存大小是不盡相同的。本文采用不同大小的內(nèi)存進(jìn)行測(cè)試,以觀察LMCOS方法在不同內(nèi)存中的表現(xiàn)。在上面的測(cè)試中,Sysbench負(fù)載是內(nèi)存密集型的,而且在總發(fā)送的內(nèi)存頁(yè)數(shù)目和總遷移時(shí)間2個(gè)方面表現(xiàn)出了截然不同的趨勢(shì)。所以選用此負(fù)載進(jìn)行不同內(nèi)存的測(cè)試。本文另外增加了1.5 GB和2 GB的內(nèi)存進(jìn)行測(cè)試。

圖12和圖13分別是Sysbench負(fù)載在不同內(nèi)存下最后一輪發(fā)送的內(nèi)存頁(yè)和停機(jī)時(shí)間。對(duì)于不同內(nèi)存進(jìn)行測(cè)試時(shí)發(fā)現(xiàn),停機(jī)時(shí)間和最后一輪發(fā)送的內(nèi)存頁(yè)數(shù)在預(yù)拷貝算法和基于運(yùn)行階段特征算法中的變化趨勢(shì)基本一致。停機(jī)時(shí)間和最后一輪發(fā)送的內(nèi)存頁(yè)數(shù)目在隨內(nèi)存增加都有不同程度的減少。

圖14和圖15分別給出了 Sysbench負(fù)載在不同內(nèi)存下的總傳輸?shù)膬?nèi)存頁(yè)和總遷移時(shí)間。可以看出,隨著內(nèi)存的增加,總傳輸?shù)膬?nèi)存頁(yè)數(shù)也隨著增加,LMCOS增加的幅度高于預(yù)拷貝算法。也迎合了不同工作負(fù)載測(cè)試環(huán)節(jié)中Sysbench場(chǎng)景所表現(xiàn)出來(lái)的總傳輸?shù)膬?nèi)存頁(yè)數(shù)目大幅增加的情形。但是總傳輸時(shí)間卻不同,預(yù)拷貝算法增加的幅度高于LMCOS,說(shuō)明盡管內(nèi)存增加,但是使用的內(nèi)存有限,大部分內(nèi)存頁(yè)和初始內(nèi)存頁(yè)面還有很多的相似性,也進(jìn)一步說(shuō)明,采用本文所提出的基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù),隨著內(nèi)存的增加,總遷移時(shí)間改進(jìn)的程度越見(jiàn)效。

總之,采用本文所提出的基于運(yùn)行階段特征的方法,隨著內(nèi)存的不同,對(duì)停機(jī)時(shí)間的影響沒(méi)有對(duì)總遷移時(shí)間的影響大。LMCOS方法中的比對(duì)初始內(nèi)存頁(yè)變量傳輸技術(shù)對(duì)虛擬機(jī)內(nèi)存大小變化最為敏感,內(nèi)存越大,總遷移時(shí)間改進(jìn)越大,這是因?yàn)槌跏茧A段內(nèi)存頁(yè)比重較大且相似于初始內(nèi)存頁(yè)。

6 結(jié)束語(yǔ)

虛擬機(jī)實(shí)時(shí)遷移技術(shù)是虛擬化領(lǐng)域的研究熱點(diǎn)之一。本文對(duì)虛擬機(jī)實(shí)時(shí)遷移中最常用的預(yù)拷貝算法進(jìn)行了改進(jìn),在預(yù)拷貝算法運(yùn)行的不同階段,分別引入了不同的技術(shù)手段,提出了基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)。在預(yù)拷貝算法執(zhí)行的過(guò)程中,通過(guò)總結(jié)各個(gè)階段的顯著特點(diǎn),并分別采取有針對(duì)性的改進(jìn)措施,取得了很好的收益。實(shí)驗(yàn)結(jié)果表明,在不同工作負(fù)載的情況下,基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)可以同時(shí)減少停機(jī)時(shí)間、總遷移時(shí)間。最好的情況下可以使總遷移時(shí)間減少89%左右,同時(shí)使停機(jī)時(shí)間減少98%左右。基于運(yùn)行階段特征的虛擬機(jī)實(shí)時(shí)遷移技術(shù)適用于不同的內(nèi)存,對(duì)于不同內(nèi)存下的同一負(fù)載,隨著內(nèi)存的增加,總遷移時(shí)間的改進(jìn)越有成效,但是對(duì)停機(jī)時(shí)間而言,改進(jìn)的成效沒(méi)有總遷移時(shí)間明顯。后續(xù)工作中,將繼續(xù)研究和虛擬機(jī)實(shí)時(shí)遷移相關(guān)的其他方面,包括遷移時(shí)多虛擬機(jī)之間的相互影響,以及遷移中的安全性等問(wèn)題。

[1] CLARK C, FRASER K, HAND S. Live migration of virtual machines. Networked[C]//Systems Design &Implementation(NSDI). c2005: 273-286.

[2] HINES M R, DESHPANDE U, GOPALAN K. Post-copy live migration of virtual machines[C]//ACM SIGOPS Operating Systems Review. c2009: 14-26.

[3] 陳陽(yáng), 懷進(jìn)鵬, 胡春明. 基于內(nèi)存混合復(fù)制方式的虛擬機(jī)在線遷移機(jī)制[J]. 計(jì)算機(jī)學(xué)報(bào), 2011, 34(12): 2278-2291.

CHEN Y, HUAI J P, HU C M. Live migration of virtual machines based on hybrid memory copy approach[J]. Chinese Journal of Computers, 2011, 34(12): 2278-2291.

[4] LIU H K, JIN H, LIAO X F. Live migration of virtual machine based on full system trace and replay[C]//Symposium on High Performance Distributed Computing (HPDC). c2009: 101-110.

[5] CHANCHIO K,THAENKAEW P. Time-bound, thread-based live migration of virtual machines[C]//Cluster, Cloud and Grid Computing (CCGrid). c2014: 364-373.

[6] JIN H, DENG L, WU S. Live Virtual machine migration with adaptive memory compression[C]//Cluster Computing and Workshops (CLUSTER). c2009: 1-10.

[7] ZHANG X, HUO Z G, MA J. Exploiting data deduplication to accelerate live virtual machine migration[C]//Cluster Computing (CLUSTER). c2009: 88-96.

[8] SVARD P, HUDZIA B, TORDSSON J. Evaluation of delta compression techniques for efficient live migration of large virtual machines[C]//Virtual execution environments(VEE). c2011: 111-120.

[9] MA Y Q, WANG H B, DONG J K. ME2:efficient live migration of virtual machine with memory exploration and encoding[C]//Cluster Computing (CLUSTER). c2012: 610-613.

[10] DU Y Y, YU H L, SHI G Y. Microwiper: efficient memory propagation in live migration of virtual machines[C]//Parallel Processing (ICPP). c2010: 141-149.

[11] SV?RD P, TORDSSON J, HUDZIA B. High performance live migration through dynamic page transfer reordering and compression[C]//Cloud Computing Technology and Science (CloudCom). c2011: 542-548.

[12] ZOU Q X, HAO Z Y, CUI X. Counting sort for the live migration of virtual machine[C]//Cluster Computing (CLUSTER). c2013: 1-5.

[13] LIU Z B, QU W Y, LIU W J. Xen live migration with slowdown scheduling algorithm[C]//Parallel and Distributed Computing, Applications and Technologies (PDCAT). c2010: 215-221.

[14] JIN H, GAO W, WU S. Optimizing the live migration of virtual machine by CPU scheduling[J]. Journal of Network and Computer Applications. 2011, 34: 1088-1096.

[15] ADEL A, KAMRAN Z. Improving the time of live migration virtual machine by optimized algorithm scheduler credit[C]//Computer and Knowledge Engineering (ICCKE). c2014: 346-351.

Live migration based on the characteristics of operation stages for virtual machine

ZOU Qing-xin1,2,3, HAO Zhi-yu3, YUN Xiao-chun1,3

(1. Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China; 2. University of Chinese Academy of Sciences, Beijing 100049, China; 3. Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100193, China)

Being directed against the different characteristics of start, iterative and end stages of pre-copy algorithm, live migration based on the characteristics of operation stages referred to as LMCOS was proposed. In the start stage, the technique of comparing initial memory page and sending variables was brought to avoid the transferring of unmodified memory. During the iterative stage, the transmitting method of counting sort was brought to reduce retransmitting memory pages. In the end stage, the police of reducing time slices of virtual machine’s CPU was brought to shorten the down-time. Compared with pre-copy algorithm, LMCOS reduces downtime by 53% and total migration time by 65% on average.

live migration, pre-copy, characteristics of the operation stages, virtual machine

TP302

A

10.11959/j.issn.1000-436x.2016021

2015-06-03;

2015-10-30

國(guó)家科技支撐計(jì)劃基金資助項(xiàng)目(No.2012BAH46B02)

The National Key Technology Support Program (No.2012BAH46B02)

鄒慶欣(1982-),男,遼寧義縣人,中國(guó)科學(xué)院計(jì)算技術(shù)研究所博士生,主要研究方向?yàn)樾畔踩吞摂M化技術(shù)。

郝志宇(1980-),男,山東蓬萊人,博士,中國(guó)科學(xué)院信息工程研究所副研究員,主要研究方向?yàn)樾畔踩吞摂M化技術(shù)。

云曉春(1971-),男,黑龍江哈爾濱人,博士,中國(guó)科學(xué)院計(jì)算技術(shù)研究所研究員、博士生導(dǎo)師,主要研究方向?yàn)樾畔踩⒂?jì)算機(jī)網(wǎng)絡(luò)等。

猜你喜歡
方法
中醫(yī)特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數(shù)學(xué)教學(xué)改革的方法
化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學(xué)習(xí)方法
用對(duì)方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡(jiǎn)單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 免费在线一区| 欧美精品色视频| 最新加勒比隔壁人妻| 亚洲国产精品日韩欧美一区| 精品久久综合1区2区3区激情| 国产一级精品毛片基地| 欧美色香蕉| 激情乱人伦| 成人毛片免费在线观看| 国产极品美女在线观看| 亚洲第一成年免费网站| 欧美人与动牲交a欧美精品| 99在线视频免费| 欧美国产三级| 免费在线播放毛片| 国产欧美精品午夜在线播放| 色噜噜狠狠色综合网图区| 亚洲国产精品不卡在线| 综合成人国产| 美女无遮挡免费视频网站| 综合色在线| 一本色道久久88综合日韩精品| 凹凸国产分类在线观看| 欲色天天综合网| 无码aaa视频| 久久综合成人| 亚洲永久免费网站| 欧美在线黄| 欧美激情视频二区三区| 青青久视频| 国产精品无码久久久久久| 久久精品无码中文字幕| 国产福利一区视频| 国产9191精品免费观看| 日本一区二区三区精品视频| 国产色爱av资源综合区| 91丨九色丨首页在线播放| 噜噜噜久久| 精品国产Av电影无码久久久| 丁香综合在线| 国产一级二级三级毛片| 欧美区一区二区三| 亚洲AV无码久久精品色欲| 亚洲无码久久久久| 性激烈欧美三级在线播放| 日韩高清中文字幕| 欧美怡红院视频一区二区三区| 狼友av永久网站免费观看| 国产99在线观看| 91网在线| 欧美色视频在线| 国产成人精品一区二区| 日本免费a视频| 久久无码高潮喷水| 手机在线看片不卡中文字幕| 伊人激情综合网| 911亚洲精品| 操美女免费网站| 日本高清成本人视频一区| 国产屁屁影院| 国产成人亚洲日韩欧美电影| 欧美不卡二区| 在线观看无码a∨| 亚洲一级毛片免费看| 久久99国产乱子伦精品免| 日韩欧美中文| 亚洲婷婷六月| 成人免费视频一区二区三区| 日日噜噜夜夜狠狠视频| 99久久无色码中文字幕| 国产精品无码一区二区桃花视频| 综合天天色| 亚洲视屏在线观看| 成人午夜福利视频| 亚洲大尺度在线| 中文字幕日韩视频欧美一区| 国产美女自慰在线观看| 欧美伦理一区| 香蕉视频在线观看www| 欧美激情视频一区二区三区免费| 久久久久夜色精品波多野结衣| 九九九精品视频|