專利名稱:基于內(nèi)存熱插拔的虛擬機動態(tài)內(nèi)存管理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機應(yīng)用領(lǐng)域,涉及Xen半虛擬化虛擬機的內(nèi)存管理,具體為一種多虛擬機環(huán)境下的動態(tài)內(nèi)存管理系統(tǒng)。
背景技術(shù):
當(dāng)前計算系統(tǒng)的資源規(guī)模不斷擴展,處理能力快速增強,資源種類日益豐富,應(yīng)用需求靈活多樣。虛擬化技術(shù)能夠動態(tài)組織多種計算資源,實現(xiàn)透明化的可伸縮計算系統(tǒng)架構(gòu),從而靈活構(gòu)建滿足多種應(yīng)用需求的計算環(huán)境,提高計算資源的使用效率。各種不同的虛擬化解決方案不斷涌現(xiàn),虛擬化軟件Xen無疑是其中的佼佼者。Xen是劍橋大學(xué)發(fā)起的一個開源的虛擬機項目,其性能接近單機操作系統(tǒng)的性能。由于其優(yōu)越的性能和開源性,所以被業(yè)界廣泛看好,被認(rèn)為是未來最有前途的虛擬化解決方案之一。氣球驅(qū)動是Xen虛擬機內(nèi)存管理的重要功能,用來調(diào)整虛擬機的內(nèi)存大小。但是氣球驅(qū)動存在缺陷,比如不能擴展虛擬機的物理地址空間,導(dǎo)致虛擬機內(nèi)存大小存在上限;頻繁使用氣球驅(qū)動會導(dǎo)致物理地址空間不連續(xù),產(chǎn)生內(nèi)存碎片。內(nèi)存熱插拔是操作系統(tǒng)內(nèi)存管理的一項重要技術(shù),可以有效改善氣球驅(qū)動的缺點,但是在Xen虛擬機上還未實現(xiàn)。一般情況下,單臺物理機上運行多臺虛擬機使用靜態(tài)內(nèi)存分配,即虛擬機的內(nèi)存大小始終不變或者由管理員手動調(diào)整,在虛擬機負(fù)載變化時,可能出現(xiàn)內(nèi)存不足或內(nèi)存利用率過低的情況。因此需要一種動態(tài)的內(nèi)存管理策略,根據(jù)每個虛擬機負(fù)載的變化自動調(diào)整虛擬機的內(nèi)存大小,滿足虛擬機的內(nèi)存需求并充分利用物理機內(nèi)存。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于內(nèi)存熱插拔的虛擬機動態(tài)內(nèi)存管理系統(tǒng),該系統(tǒng)能夠打破虛擬機的內(nèi)存上限,任意的增加或減小虛擬機;可根據(jù)虛擬機負(fù)載的變化,動態(tài)的調(diào)整每個虛擬機的內(nèi)存大小,滿足虛擬機的內(nèi)存需求并提高物理機的內(nèi)存利用率;在物理機內(nèi)存不足時,通過合理減小現(xiàn)有虛擬機的內(nèi)存,動態(tài)創(chuàng)建新的虛擬機。基于內(nèi)存熱插拔的虛擬機動態(tài)內(nèi)存管理系統(tǒng),包括內(nèi)存監(jiān)視模塊,用于獲取各虛擬機的內(nèi)存信息;內(nèi)存分配模塊,用于依據(jù)各虛擬機的內(nèi)存信息進行動態(tài)內(nèi)存分配和動態(tài)創(chuàng)建虛擬機;內(nèi)存熱插拔模塊,用于將虛擬機的內(nèi)存調(diào)整到內(nèi)存分配模塊計算得到的內(nèi)存目標(biāo)值;所述動態(tài)內(nèi)存分配按照如下方式進行(11)計算各虛擬機的內(nèi)存增量AM1 = M^Oih-M^Oi-lh和交換分區(qū)增量AS1 =S (Ii)1-S (H)1,其中Mused(Ii)1和Mused(Ii-I)1分別為第1個虛擬機在第η和η-1個時間點的使用內(nèi)存,S (n) i和S (η-1) χ分別為第1個虛擬機在第η和η_1個時間點的使用交換分區(qū), 1 = 1,...,L,L為虛擬機總數(shù);
(12)預(yù)測各虛擬機下一個時間點需要的使用內(nèi)存Mpredirt (n+1) x = Mused (η) !+ Δ M1+ Δ S1 ;(13)計算第η + 1個時間點的平均內(nèi)存利用率
權(quán)利要求
1.基于內(nèi)存熱插拔的虛擬機動態(tài)內(nèi)存管理系統(tǒng),包括內(nèi)存監(jiān)視模塊,用于獲取各虛擬機的內(nèi)存信息;內(nèi)存分配模塊,用于依據(jù)各虛擬機的內(nèi)存信息進行動態(tài)內(nèi)存分配和動態(tài)創(chuàng)建虛擬機;內(nèi)存熱插拔模塊,用于將虛擬機的內(nèi)存調(diào)整到內(nèi)存分配模塊計算得到的內(nèi)存目標(biāo)值;所述動態(tài)內(nèi)存分配按照如下方式進行(11)計算各虛擬機的內(nèi)存增量AM1= Mused(n)1-Mused(n-l)dP交換分區(qū)增量AS1 = S(n)^S(Ii-I)1,其中Mused(Ii)1和Mused(n_l)i分別為第1個虛擬機在第η和η-1個時間點的使用內(nèi)存,S(Ii)1和S(Ii-I)1分別為第1個虛擬機在第η和η-1個時間點的使用交換分區(qū), 1 = 1,...,L,L為虛擬機總數(shù);(12)預(yù)測各虛擬機下一個時間點需要的使用內(nèi)存Mpredirt(I^l)1= Mused(n) !+AM1+Δ S1 ;(13)計算第η+ 1個時間點的平均內(nèi)存利用率
2.根據(jù)權(quán)利要求1所述的基于內(nèi)存熱插拔的虛擬機動態(tài)內(nèi)存管理系統(tǒng),其特征在于, 所述內(nèi)存熱插拔模塊按照如下方式調(diào)整虛擬機內(nèi)存(31)將虛擬機的內(nèi)存目標(biāo)值與虛擬機的當(dāng)前內(nèi)存進行比較,若大于,進入步驟(32); 若小于,進入步驟(34);若等于,則結(jié)束;(32)若虛擬機的物理地址空間小于虛擬機的內(nèi)存目標(biāo)值,則擴展其物理地址空間至大于或等于內(nèi)存目標(biāo)值,記擴展的新物理地址空間中的內(nèi)存頁面為離線頁面,進入步驟(33), 否則,直接進入步驟(33);(33)增加虛擬機內(nèi)存至內(nèi)存目標(biāo)值(331)若虛擬機的內(nèi)存目標(biāo)值大于當(dāng)前內(nèi)存,則計算虛擬機內(nèi)存目標(biāo)值與當(dāng)前內(nèi)存的差值A(chǔ)1,進入步驟(332),否則,結(jié)束;(332)如果存在保留頁面,則為一個保留頁面分配內(nèi)存,記該保留頁面為可用頁面,返回步驟(331);否則,進入步驟(333);(333)若A1大于128M且存在離線內(nèi)存段, 則為一個離線內(nèi)存段分配內(nèi)存,記該離線內(nèi)存段為可用內(nèi)存段,返回步驟(331),否則,進入步驟(334);(335)按照地址先后順序逐一對離線頁面分配內(nèi)存直到被分配的內(nèi)存和等于A1,記被分配內(nèi)存的離線頁面為可用頁面;(34)減小虛擬機內(nèi)存至內(nèi)存目標(biāo)值(341)若虛擬機的內(nèi)存目標(biāo)值小于當(dāng)前內(nèi)存,則計算當(dāng)前內(nèi)存與虛擬機內(nèi)存目標(biāo)值的差值Δ 2,進入步驟(342),否則,結(jié)束;(342)若Δ2大于或等于128Μ,則進入步驟(343),否則,進入步驟(344);(343)查詢是否存在可刪除的內(nèi)存段,若存在,則將其中一個內(nèi)存段的內(nèi)存釋放給虛擬機管理器,記該內(nèi)存段為離線內(nèi)存段,返回步驟(341),否則,進入步驟(344);(344)向虛擬機操作系統(tǒng)申請大小為Δ2的內(nèi)存,將申請到的內(nèi)存頁面釋放給虛擬機管理器,并記這些頁面為保留頁面。
全文摘要
本發(fā)明公開了一種基于內(nèi)存熱插拔的虛擬機動態(tài)內(nèi)存管理系統(tǒng),包括內(nèi)存監(jiān)視模塊、內(nèi)存分配模塊及內(nèi)存熱插拔模塊。內(nèi)存熱插拔模塊利用Linux內(nèi)存熱插拔機制,在半虛擬化Linux虛擬機上實現(xiàn)內(nèi)存熱插拔,打破虛擬機初始的內(nèi)存上限,任意的增加或減小內(nèi)存,有效提高了虛擬機內(nèi)存的擴展性。內(nèi)存分配模塊一方面動態(tài)預(yù)測虛擬機的內(nèi)存需求,平衡各虛擬機的內(nèi)存壓力,既能滿足虛擬機的內(nèi)存需求,又能提高物理機的內(nèi)存利用率;另一方面可以在物理機內(nèi)存不足時,通過合理減小現(xiàn)有虛擬機的內(nèi)存來創(chuàng)建新的虛擬機,實現(xiàn)了內(nèi)存過量使用,提高了物理機的內(nèi)存利用率。
文檔編號G06F12/02GK102222014SQ20111016261
公開日2011年10月19日 申請日期2011年6月16日 優(yōu)先權(quán)日2011年6月16日
發(fā)明者劉海坤, 廖小飛, 金海 , 馬博 申請人:華中科技大學(xué)