崔勇 張志偉
【摘要】 KVM虛擬機(jī)平臺是目前構(gòu)建企業(yè)級虛擬化云計算數(shù)據(jù)中心的主流工具,其基于預(yù)拷貝算法提供虛擬機(jī)實時遷移功能。當(dāng)虛擬機(jī)負(fù)載較高時,KVM在進(jìn)行實時遷移虛擬機(jī)時存在著高臟頁率內(nèi)存頁面重復(fù)傳輸?shù)膯栴},影響遷移性能。對此,提出一個KVM中實時遷移算法的優(yōu)化方案,通過綜合考慮內(nèi)存頁面訪問記錄的時近性和頻度識別高臟頁率頁面,有效避免臟頁重傳問題。
【關(guān)鍵詞】 KVM 虛擬機(jī) 實時遷移 Pre-copy
一、引言
目前,云計算平臺主要采用服務(wù)器虛擬化技術(shù)為用戶提供彈性的IT基礎(chǔ)設(shè)施服務(wù)。KVM(Kernel-based Virtual Machine)作為一個主流的開源虛擬化平臺,其內(nèi)部基于Pre-copy算法提供了虛擬機(jī)實時遷移的功能,可以實現(xiàn)在不干擾虛擬機(jī)正常業(yè)務(wù)的情況下將正在運(yùn)行的虛擬機(jī)從一臺物理主機(jī)移動到另一臺物理主機(jī)上,達(dá)到數(shù)據(jù)中心資源靈活配置及管理的目的。雖然KVM提供的實時遷移算法能在虛擬機(jī)業(yè)務(wù)負(fù)載較輕時運(yùn)行良好,但是當(dāng)虛擬機(jī)業(yè)務(wù)負(fù)載較重時會出現(xiàn)重復(fù)傳輸高臟頁率內(nèi)存頁面的問題,影響了實時遷移性能。對此,本文在KVM的實時遷移算法中引入一個高臟頁率頁面的識別機(jī)制,通過綜合考慮內(nèi)存頁面訪問記錄的時近性和頻度,識別出高臟頁率的頁面,進(jìn)而避免對這些頁面的重復(fù)傳輸。
二、KVM虛擬機(jī)及實時遷移算法
2.1 KVM虛擬機(jī)
KVM(基于內(nèi)核的虛擬機(jī))是一款目前主流的開源虛擬機(jī)平臺。從整體架構(gòu)上看,它是一種非常輕量級的虛擬化解決方案,借助現(xiàn)有的虛擬化技術(shù)和操作系統(tǒng)內(nèi)核實現(xiàn)了一個高性能的虛擬機(jī)管理器。KVM平臺架構(gòu)主要包括兩個部分,一個是運(yùn)行在內(nèi)核空間的KVM模塊,一個是運(yùn)行在用戶空間的QEMU應(yīng)用程序:KVM模塊實現(xiàn)為一個Linux內(nèi)核模塊,采用硬件輔助虛擬化技術(shù)完成底層硬件的虛擬化功能。QEMU應(yīng)用程序利用現(xiàn)有的平臺模擬器軟件QEMU實現(xiàn)了一個針對KVM的版本KVM-QEMU,運(yùn)行在Linux操作系統(tǒng)的用戶空間,提供KVM虛擬化平臺的對外接口及部分I/O虛擬化功能。從整體上看,KVM平臺引入了一個非常薄的虛擬化層。
2.2實時遷移算法
KVM采用的虛擬機(jī)實時遷移算法是Pre-copy,其遷移對象主要包括設(shè)備狀態(tài)數(shù)據(jù)及內(nèi)存,運(yùn)行流程如下:
1.開始實時遷移,首先將虛擬機(jī)的所有內(nèi)存頁面?zhèn)鬏斶^去;
2.進(jìn)入一個迭代拷貝階段,每個拷貝輪都傳輸在上一輪中產(chǎn)生的內(nèi)存臟頁;
3.若剩余臟頁小于一定值或迭代次數(shù)達(dá)到一定次數(shù),則進(jìn)入步驟4,否則繼續(xù)步驟2;
4.進(jìn)入一個停機(jī)拷貝階段,在源宿主機(jī)上暫停虛擬機(jī)運(yùn)行,然后將虛擬機(jī)的設(shè)備狀態(tài)數(shù)據(jù)連同剩余臟頁一齊傳輸?shù)侥繕?biāo)宿主機(jī)上;
5.在目標(biāo)宿主機(jī)上恢復(fù)虛擬機(jī)運(yùn)行,實時遷移結(jié)束。
三、KVM下的實時遷移算法優(yōu)化方案
KVM中進(jìn)行虛擬機(jī)實時遷移時,當(dāng)內(nèi)存臟頁率較高時,Pre-copy算法的迭代拷貝階段會出現(xiàn)重復(fù)傳輸高臟頁率頁面的情況。對此,本文在Pre-copy中引入了一個高臟頁率內(nèi)存頁面的識別機(jī)制。
3.1高臟頁率頁面識別機(jī)制
本文提出的高臟頁率頁面識別機(jī)制,首先利用KVM提供的內(nèi)存臟頁跟蹤功能對內(nèi)存頁面在一段時間內(nèi)的寫操作情況按時間次序進(jìn)行記錄,形成頁面的訪問時間序列,然后根據(jù)該訪問時間序列,綜合考慮頁面訪問的時近性和頻度,識別出實時遷移過程中臟頁率較高的頁面。
具體識別過程:
對于某個內(nèi)存頁面p,令其統(tǒng)計出的訪問時間序列長度為n,并對其中最近的[n /2]次記錄中的寫操作次數(shù)求和,設(shè)為S。設(shè)定一個臟頁率閾值M,若S≥M,則判定p為高臟頁率頁面。
3.2 KVM中優(yōu)化的實時遷移算法
在引入高臟頁率頁面識別機(jī)制后,KVM中優(yōu)化后的實時遷移算法運(yùn)行如下:
1. 實時遷移開始,首先在一定時間內(nèi)進(jìn)行內(nèi)存臟頁跟蹤,形成頁面的訪問記錄序列;
2. 傳輸所有內(nèi)存頁面;
3. 進(jìn)入迭代拷貝階段,當(dāng)需要傳輸某個頁面時,首先對其進(jìn)行臟頁識別,若識別為高臟頁率頁面則本輪不傳輸,否則傳輸;
4. 按Pre-copy的標(biāo)準(zhǔn)流程繼續(xù)執(zhí)行,直至遷移結(jié)束。
四、結(jié)語
本文針對KVM中實時遷移算法存在的高臟頁率內(nèi)存頁面的重傳問題,通過綜合考慮頁面歷史訪問記錄的時近性和頻度,引入一個高臟頁率頁面的有效識別機(jī)制對標(biāo)準(zhǔn)的實時遷移算法進(jìn)行優(yōu)化,提高其實際運(yùn)行性能。
參 考 文 獻(xiàn)
[1] KVM[EB/OL]. http://www.linux-kvm.org.
[2]袁野, 趙海燕, 曹健, 等. 虛擬機(jī)內(nèi)存遷移技術(shù)研究[J]. 小型微型計算機(jī)系統(tǒng), 2014, 35(2): 412-418.
[3] 馬飛,劉峰,李竹伊. 云計算環(huán)境下虛擬機(jī)快速實時遷移方法[J].北京郵電大學(xué)學(xué)報,2012,35(1): 103-106.