多虛擬機系統(tǒng)中一種主動共享的內存超量分配方法
【技術領域】
[0001]本發(fā)明涉及虛擬化計算機系統(tǒng)中內存資源管理與分配的實現(xiàn)方法,尤其是大規(guī)模部署虛擬化技術的彈性云計算系統(tǒng),如互聯(lián)網數(shù)據中心及多租戶云計算環(huán)境中虛擬機間內存資源的管理分配方法。
【背景技術】
[0002]在多虛擬機(Virtual Machine, VM)系統(tǒng)中,多個虛擬機共享同一個物理機(Physical Machine, PM)的硬件資源,如處理器、內存、磁盤和網絡設備。隨著虛擬機數(shù)量的增加,硬件資源總體上可能處于過量分配狀態(tài)。而在多租戶云計算環(huán)境下,由于不同虛擬機的負載高峰時間可能不同,為了承載最大的客戶虛擬機,物理硬件資源的過量分配情況可能進一步加劇。然而,客戶虛擬機負載的不可預測性,使得靜態(tài)的資源分配方式無法適應于動態(tài)的變化的負載。因此,為了保證各個客戶虛擬機的性能和服務質量,虛擬機監(jiān)控器必須根據不斷變化的外部負載為各個客戶虛擬機動態(tài)地分配資源。
[0003]處理器的分時特性使其在虛擬化系統(tǒng)中成為最高效的組件,而磁盤由于其獨占性,成為無法虛擬化的資源。而內存的計算性能介于磁盤和處理器之間,同時由于其線性特性,特別適合于虛擬化。因此,作為虛擬化計算系統(tǒng)的關鍵資源,內存資源分配的好壞決定了整個虛擬化計算系統(tǒng)的性能優(yōu)劣。
[0004]但是,由于現(xiàn)有的虛擬化平臺中內存管理的方式無法在物理機上分辨客戶機內部內存頁面的具體狀態(tài),客戶機內存頁面僅以被訪問的頻率和內容上的重復性的形式被物理機所感知,可能出現(xiàn)一些不合理的情況,各種現(xiàn)有的內存超量使用策略也都存在一定的局限和缺陷,存在內存資源浪費、回收不及時等問題,影響了整個虛擬化系統(tǒng)的性能。
【發(fā)明內容】
[0005]由于當前的虛擬機監(jiān)控器軟件無法識別其上層客戶虛擬機的內存使用狀態(tài),不管其實際內存頁面的具體狀態(tài),虛擬機監(jiān)控器僅僅根據客戶機內存頁面被訪問的頻率和內容上的重復性的形式進行分配,無法最大化整個計算機系統(tǒng)的最佳效能。因此,本發(fā)明基于客戶虛擬機的主動共享,將客戶虛擬機不使用的內存及時回收,并可分配給需要內存資源的其它虛擬機,最終提高虛擬化系統(tǒng)的性能和服務質量。
[0006]該發(fā)明包含三部分的內容:基于平鋪記錄法和差量鏈表記錄法的客戶虛擬機內存頁面標記方法、基于虛擬通道(Virtual Channel, VC)的主動內存共享方法和基于上述兩個方法的多虛擬機內存超量分配方法。
[0007](I)基于平鋪記錄法和差量鏈表記錄法的客戶虛擬機內存頁面標記方法針對已有的虛擬機監(jiān)控器不考慮具體客戶虛擬機內存使用狀態(tài)的特點,本發(fā)明提出了分別基于平鋪記錄法和差量鏈表記錄法的客戶虛擬機內存頁面使用狀態(tài)標記方法,用來標記客戶虛擬機的內存頁面的使用狀態(tài)。識別客戶虛擬機的內存頁面的使用狀態(tài),是進行內存主動共孚的如提。
[0008](2)基于虛擬通道的主動內存共享方法虛擬通道用來發(fā)送和處理客戶虛擬機和虛擬機監(jiān)控器之間的通信數(shù)據的雙向管道,其使用異步通信機制完成從虛擬機監(jiān)控器到客戶虛擬機的指令與數(shù)據通信。通過開辟單獨的共享內存區(qū)域,通信發(fā)起端(即Offer端)打開虛擬通道,虛擬通道由其端口號表示,而通信接收端(即Receiver端)通過端口號和遠端域ID來連接這個虛擬通道。Offer端進程初始化的同時,虛擬通道的端口號被寫進共享內存頁,這樣Receiver端就可以讀到端口號,并連接到虛擬通道,進行數(shù)據通信。虛擬通道為進行內存超量分配提供了執(zhí)行通道和橋m
ο
[0009](3)多虛擬機間內存超量分配方法
根據客戶虛擬機主動提出的共享內存頁面請求,虛擬機監(jiān)控器進行內存回收,并可分配給需要內存資源的其它虛擬機,或將該內存資源保留以待未來使用,提高虛擬化系統(tǒng)的內存使用效率。
[0010]本發(fā)明方法的具體步驟是:
步驟1.在客戶虛擬機和虛擬機監(jiān)控器之間建立虛擬通道,用來發(fā)送和處理客戶虛擬機和虛擬機監(jiān)控器之間的通信數(shù)據;
步驟2.客戶虛擬機本地資源代理利用基于平鋪記錄法和差量鏈表記錄法標記并保存本機的內存使用狀態(tài);
步驟3.客戶虛擬機通過虛擬通道將本機主動共享的內存頁面告知虛擬機監(jiān)控器;步驟4.虛擬機監(jiān)控器通過虛擬通道接收客戶虛擬機的主動共享的內存頁面地址;步驟5.虛擬機監(jiān)控器根據客戶虛擬機提供的共享內存頁面地址,將相應的內存頁面回收,并可分配給需要內存資源的其它虛擬機,或將該內存資源保留以待未來使用,實現(xiàn)內存超量分配。
[0011 ] 步驟6.周期性循環(huán)步驟I至步驟5。
[0012]通過本發(fā)明提供的基于主動共享的內存超量分配方法,可以在多虛擬機系統(tǒng)中動態(tài)調整內存資源的分配,有效緩解內存資源的競爭程度,顯著提高整個虛擬化系統(tǒng)的性能和服務質量。
【附圖說明】
[0013]圖1是虛擬化系統(tǒng)主動內存共享的內存超量分配方法體系結構。
[0014]圖2是虛擬機內存狀態(tài)轉移圖。
[0015]圖3是差量鏈表記錄法內存頁塊釋放優(yōu)先級。
【具體實施方式】
[0016]以下結合附圖對本發(fā)明作進一步說明,請參閱圖1 ;圖1給出了本發(fā)明提出的虛擬化系統(tǒng)主動內存共享的內存超量分配方法的體系結構。其中I為計算系統(tǒng)中的可供分配的物理內存,2為內存驅動器,3為統(tǒng)一內存分配器,負責全局內存資源的統(tǒng)一分配。4為物理機內核內存調度器,5為內存回收模塊,6 (虛線框內)為虛擬機監(jiān)控器,虛擬機監(jiān)控器除了具備基本的虛擬機管理其中又包括3、4、5、7四部分,7為虛擬通道,3、4、5、7四部分均為駐留在虛擬機監(jiān)控器中的軟件程序。8、9、10、11、12、13分別為客戶虛擬機中的內存,其中8、10、12為客戶虛擬機非主動共享的內存,9、11、13為客戶虛擬機主動共享的內存。14、15、16為本地資源代理,17、18、19為虛擬機上的應用程序集合,20、21、22為客戶虛擬機系統(tǒng)示例。
[0017]下面分別介紹內存驅動器、統(tǒng)一內存分配器、物理機內核內存調度器、內存回收模塊、虛擬通道和本地資源代理。
[0018](I)內存驅動器
本方法中的內存驅動器為物理機操作系統(tǒng)內核具有的內存設備驅動,其實現(xiàn)的功能包括內存數(shù)據寫入、數(shù)據讀取、中斷處理等。
[0019](2)統(tǒng)一內存分配器
本方法中由單獨的統(tǒng)一內存分配器用于分配整個計算系統(tǒng)的內存,包括物理機和客戶虛擬機內存的分配、管理和實時數(shù)據收集,可以根據不同的客戶虛擬機的實時內存使用信息及其主動共享的內存頁面數(shù)據,動態(tài)的調整客戶虛擬機的內存分配。
[0020](3)物理機內核內存調度器
本方法中的物理機內核內存調度器主要負責虛擬機中非主動共享內存的管理