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