一種內存管理方法及系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明屬于內存管理領域,尤其涉及一種內存管理方法及系統(tǒng)。
【背景技術】
[0002]隨著云計算的興起,構成其中關鍵技術之一的虛擬化技術成為業(yè)內外的焦點,虛擬化技術不再局限于IT開發(fā)領域,而是走向了更為廣闊的融合廣義的資源基礎設施層面,受虛擬化概念的影響,IT資源正在形成一種新的體系,動態(tài)組合調整所需的計算、存儲和網(wǎng)絡資源以適應最終的業(yè)務需求。
[0003]Hypervisor (virtual machine moni tor ;虛擬機監(jiān)視器 VMM)是用來管理和創(chuàng)建虛擬機的基礎軟件:例如商用的VMware ESXi和開源的Xen/KVM,都是目前主流的hypervisor ο對于hypervisor而言,CPU和內存是其管理的重要對象。在虛擬化環(huán)境中,內存可能先后分配給不同的虛擬機,為了避免信息泄露,hypervisor必須在虛擬機使用內存之前對其進行清洗(清零)。
[0004]傳統(tǒng)的內存清洗方法如圖1所示:銷毀虛擬機VM時,回收虛擬機VM中的內存并對其進行同步清洗,清洗后的內存放入cIen鏈表中;創(chuàng)建虛擬機時,從cIen鏈表中申請內存。這種傳統(tǒng)內存清洗方法隨著虛擬化技術的廣泛應用,大規(guī)格虛擬機不斷出現(xiàn),導致處理大內存時的效率低下日益嚴重,因此迫切需要一種高效的內存清洗手段,應對管理大規(guī)格虛擬機出現(xiàn)的問題。
【發(fā)明內容】
[0005]本發(fā)明提供一種內存管理方法及系統(tǒng),以解決上述問題。
[0006]本發(fā)明還提供一種內存管理方法,包括以下步驟:
[0007]銷毀虛擬機時,將所述虛擬機中的內存標記為待清洗狀態(tài)并放入待清洗鏈表;
[0008]創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理。
[0009]本發(fā)明還提供一種內存管理系統(tǒng),包括鏈表創(chuàng)建模塊、內存管理模塊;其中,所述鏈表創(chuàng)建模塊與所述內存管理模塊相連;
[0010]所述鏈表創(chuàng)建模塊,用于創(chuàng)建待清洗鏈表、已清洗鏈表并將創(chuàng)建的所述待清洗鏈表、已清洗鏈表發(fā)送至所述內存管理模塊;
[0011]所述內存管理模塊,用于銷毀虛擬機時,將所述虛擬機中的內存標記為待清洗狀態(tài)并放入待清洗鏈表;還用于創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理。
[0012]相較于先前技術,根據(jù)本發(fā)明提供的一種內存管理方法及系統(tǒng),將內存按照是否需要清洗,分為兩類:“clean”和“dirty”,需要內存清洗時只需要標記內存設置類別,借此延遲內存清洗操作,而在系統(tǒng)空閑的時候完成內存清洗;如果系統(tǒng)負載較高,則在申請內存時再完成內存清洗。由此將傳統(tǒng)的同步內存清洗操作轉化為異步清洗操作,通過延遲內存清洗,大大減少了創(chuàng)建和銷毀虛擬機所消耗的時間,調高了 hypervisor的管理效率,提升了用戶體驗。
【附圖說明】
[0013]此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
[0014]圖1所示為現(xiàn)有技術的內存管理方法流程圖;
[0015]圖2所示為本發(fā)明的內存管理方法流程圖;
[0016]圖3所示為本發(fā)明的內存管理方法示意圖;
[0017]圖4所示為本發(fā)明的內存管理系統(tǒng)結構圖。
【具體實施方式】
[0018]下文中將參考附圖并結合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0019]圖2所示為本發(fā)明的內存管理方法流程圖,包括以下步驟:
[0020]步驟201:預先設置待清洗鏈表、已清洗鏈表,分別存儲待清洗內存和已清洗內存;
[0021]步驟202:銷毀虛擬機時,將所述虛擬機中的內存標記為待清洗狀態(tài)并放入待清洗鏈表;
[0022]虛擬機監(jiān)視器銷毀虛擬機時,將所述虛擬機中的內存標記為“dirty”并放入dirty鏈表。
[0023]步驟203:創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理。
[0024]創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理的過程為:
[0025]虛擬機監(jiān)視器創(chuàng)建虛擬機時,首先從已清洗鏈表(clean鏈表)中搜索對應內存,若搜索到,則將所述內存分配給創(chuàng)建的虛擬機;否則,在待清洗鏈表中進行搜索,獲取對應待清洗內存并對所述待清洗內存進行清洗后,將清洗后的內存分配給創(chuàng)建的虛擬機。
[0026]若在待清洗鏈表中搜索不到對應的待清洗內存,則反饋創(chuàng)建虛擬機失敗。
[0027]若系統(tǒng)CPU處于空閑狀態(tài)時,從待清洗鏈表的表頭抓取一個待清洗內存進行清洗后,放入已清洗鏈表表尾。
[0028]圖3所示為本發(fā)明的內存管理方法示意圖,銷毀虛擬機時,回收虛擬機中的內存并放入dirty鏈表中,系統(tǒng)空閑時,對dirty鏈表中的內存進行異步清洗后,放入clean鏈表中;創(chuàng)建虛擬機時,從clean鏈表中獲取對應內存或者創(chuàng)建虛擬機時,從clean鏈表中獲取不到對應內存時,從dirty鏈表中獲取對應內存,進行同步清洗。
[0029]圖4所示為本發(fā)明的內存管理系統(tǒng)結構圖,包括鏈表創(chuàng)建模塊、內存管理模塊;其中,所述鏈表創(chuàng)建模塊與所述內存管理模塊相連;
[0030]所述鏈表創(chuàng)建模塊,用于創(chuàng)建待清洗鏈表、已清洗鏈表并將創(chuàng)建的所述待清洗鏈表、已清洗鏈表發(fā)送至所述內存管理模塊;
[0031]所述內存管理模塊,用于銷毀虛擬機時,將所述虛擬機中的內存標記為待清洗狀態(tài)并放入待清洗鏈表;還用于創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理。
[0032]相較于先前技術,根據(jù)本發(fā)明提供的一種內存管理方法及系統(tǒng),將內存頁面按照是否需要清洗,分為兩類:“clean”和“dirty”,需要內存清洗時只需要標記內存設置類別,借此延遲內存清洗操作,而在系統(tǒng)空閑的時候完成內存清洗;如果系統(tǒng)負載較高,則在申請內存時再完成內存清洗。由此將傳統(tǒng)的同步內存清洗操作轉化為異步清洗操作,通過延遲內存清洗,大大減少了創(chuàng)建和銷毀虛擬機所消耗的時間,調高了 hypervisor的管理效率,提升了用戶體驗。
[0033]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
【主權項】
1.一種內存管理方法,其特征在于,包括以下步驟: 銷毀虛擬機時,將所述虛擬機中的內存標記為待清洗狀態(tài)并放入待清洗鏈表; 創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理。
2.根據(jù)權利要求1所述的方法,其特征在于,預先設置待清洗鏈表、已清洗鏈表,分別存儲待清洗內存和已清洗內存。
3.根據(jù)權利要求1所述的方法,其特征在于,虛擬機監(jiān)視器銷毀虛擬機時,將所述虛擬機中的內存標記為“dirty”并放入dirty鏈表。
4.根據(jù)權利要求1所述的方法,其特征在于,虛擬機監(jiān)視器創(chuàng)建虛擬機時,首先從已清洗鏈表中搜索對應內存,若搜索到,則將所述內存分配給創(chuàng)建的虛擬機;否則,在待清洗鏈表中進行搜索,獲取對應待清洗內存并對所述待清洗內存進行清洗后,將清洗后的內存分配給創(chuàng)建的虛擬機。
5.根據(jù)權利要求4所述的方法,其特征在于,若在待清洗鏈表中搜索不到對應的待清洗內存,則反饋創(chuàng)建虛擬機失敗。
6.根據(jù)權利要求1所述的方法,其特征在于,若系統(tǒng)CPU處于空閑狀態(tài)時,從待清洗鏈表的表頭抓取一個待清洗內存進行清洗后,放入已清洗鏈表表尾。
7.—種內存管理系統(tǒng),其特征在于,包括鏈表創(chuàng)建模塊、內存管理模塊;其中,所述鏈表創(chuàng)建模塊與所述內存管理模塊相連; 所述鏈表創(chuàng)建模塊,用于創(chuàng)建待清洗鏈表、已清洗鏈表并將創(chuàng)建的所述待清洗鏈表、已清洗鏈表發(fā)送至所述內存管理模塊; 所述內存管理模塊,用于銷毀虛擬機時,將所述虛擬機中的內存標記為待清洗狀態(tài)并放入待清洗鏈表;還用于創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理。
【專利摘要】本發(fā)明提供一種內存管理方法及系統(tǒng),上述方法包括以下步驟:銷毀虛擬機時,將所述虛擬機中的內存標記為待清洗狀態(tài)并放入待清洗鏈表;創(chuàng)建虛擬機時,按照預設內存分配策略,從相應鏈表中獲取對應的內存,進行分配處理,本發(fā)明將傳統(tǒng)的同步內存清洗操作轉化為異步清洗操作,通過延遲內存清洗,大大減少了創(chuàng)建和銷毀虛擬機所消耗的時間,調高了hypervisor的管理效率,提升了用戶體驗。
【IPC分類】G06F12-02, G06F9-455
【公開號】CN104536905
【申請?zhí)枴緾N201510018655
【發(fā)明人】顏秉珩, 董青, 閆冬冬
【申請人】浪潮(北京)電子信息產(chǎn)業(yè)有限公司
【公開日】2015年4月22日
【申請日】2015年1月14日