專利名稱:實現遠程內存交換的方法、裝置及系統的制作方法
技術領域:
本發(fā)明涉及計算機內存共享技術,尤其涉及一種實現虛擬機的遠程內存交 換的方法、裝置及系統。
背景技術:
虛擬機技術源于上世紀60年代,其核心思想是在一臺物理主機上虛擬出 多個虛擬計算機,其上能同時運行多個獨立的操作系統,這些客戶操作系統 Guest OS通過VMM (Virtual Machine Monitor,虛擬機管理器)訪問實際的物理 資源。多機聚合虛擬化的目標是使得一個虛擬機能夠利用多臺物理主機的計算資 源,實現對虛擬機能力的提升和對物理主機資源的有效利用。在多機聚合虛擬 化中,如何使得一個虛擬機能夠使用宿主物理主機以外的內存資源提高虛擬機 的性能,是一個很有意義的問題。目前,虛擬內存是解決系統峰值內存需求量大于主機物理內存的主要技術。 但把虛擬內存技術直接應用于虛擬機中時,會存在一些問題。首先,如果直接 在虛擬機內采用虛擬內存技術,由于虛擬機使用的硬盤為虛擬設備,在頁面交 換上效率會比較低;其次,如果在VMM層次也采用虛擬內存技術,則因為VMM 不能獲得虛擬機內部對內存使用的有效信息,使其對頁面交換的決策存在無法 最優(yōu)、重復交換、冗余回寫等問題。在現有技術中,通過Ballooning技術,VMWare和Xen都實現了在虛擬機 之間暫時的轉借內存,使得在同一臺物理主機上的多個虛擬機可使用超出物理 主機內存總量的內存。Ballooning技術是通過在虛擬機的客戶操作系統中安裝專 用的驅動程序,通過驅動程序申請并鎖定一定數量的內存并返還給虛擬機管理 器,這些返還的內存可,皮VMM通過其他虛擬才幾的Ballooning驅動程序分配l吏 用。發(fā)明人在實施本發(fā)明的過程中,發(fā)現上述現有的虛擬機之間的轉借內存技術具有如下缺點這種技術要求在客戶操作系統中安裝特定的驅動(修改客戶操作系統)才 能實現,這對客戶操作系統而言是非透明的;同時,它仍然依賴于客戶操作系 統的虛擬內存頁面交換機制,而向虛擬硬盤進行頁面交換效率較低;如果每個 虛擬機同時需要大量內存時,其對內存需求的總量會超過物理內存限制,從而 無法得到滿足一個物理主機上聚合多個虛擬機的需求。發(fā)明內容本發(fā)明實施例提供一種實現遠程內存交換的方法、裝置及系統,可提高物 理主機上虛擬才幾的數量。為了解決上述技術問題,本發(fā)明實施例提供了 一種實現遠程內存交換的方 法,包括從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面; 將映射了所述機器頁面的物理頁面的內容傳送到遠程交換空間,其中,所述遠程交換空間建立在遠程物理主機上。相應地,本發(fā)明實施例還提供了一種實現遠程內存交換的裝置,包括 頁面回收模塊,用于從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面;遠程發(fā)送模塊,用于將映射了所述頁面回收模塊所釋放的機器頁面的物理 頁面的內容傳送到遠程交換空間。相應地,本發(fā)明實施例還提供了一種實現遠程內存交換的系統,包括第一 物理主機和第二物理主才幾;所述第一物理主機上創(chuàng)建有遠程交換空間,用于存儲所述第二物理主機上 的虛擬機的內存交換文件;所述第二物理主機上設有虛擬機,從虛擬機的機器內存中釋放機器頁面, 所述機器頁面映射有物理頁面,將映射了所述機器頁面的物理頁面的內容傳送 到所述第 一物理主機的遠程交換空間上。實施本發(fā)明實施例提供的實現遠程內存交換的方法、裝置及系統,具有以 下有益效果過高速網絡將虛擬機的部分內存交換到所述遠程物理主機的空閑內存上,提高 在一組物理主機上聚合虛擬機的數量和執(zhí)行效率,使得在充分保證虛擬機頁面 交換性能的前提下,實現對物理主機更高的利用率,降低總體擁有成本。
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施 例或現有技術描述中所需要使用的附圖作筒單地介紹,顯而易見地,下面描述 中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付 出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1是本發(fā)明實施例提供的實現遠程內存交換的系統的組成示意圖; 圖2是本發(fā)明實施例提供的實現遠程內存交換的裝置的組成示意圖; 圖3是本發(fā)明實施例提供的頁面回收模塊的組成示意圖; 圖4是本發(fā)明實施例提供的頁面狀態(tài)轉移示意圖; 圖5是本發(fā)明實施例提供的遠程交換協議格式示意圖; 圖6是本發(fā)明實施例提供的實現遠程內存交換的方法的流程示意圖; 圖7是本發(fā)明實施例提供的實現遠程內存交換的系統的一個實施例的組成 示意圖;圖8是如圖7所示系統實現遠程內存交換實施例的流程示意圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清 楚、完整地描述,顯然,所描述的實施例僅4又是本發(fā)明一部分實施例,而不是 全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造 性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。參見圖1,是本發(fā)明實施例提供的實現遠程內存交換的系統的組成示意圖。 所述系統包括第 一物理主機和第二物理主機。虛擬機系統中存在著三個地址概念機器地址(MachineAddress),指真實硬件的物理地址,即地址總線上應該出 現的地址信號。物理地址(Guest Physical Address),指經過虛擬才幾管理器VMM抽象的、虛擬機所看到的偽物理地址。虛擬地址(Guest Virtual Address),指客戶操作系統Guest OS提拱給其應用程 序使用的線性地址空間。基于以上概念,在本發(fā)明實施例中,將虛擬機管理器管理的物理主機的實 際內存稱為機器內存(以"頁面"為單位),其中的頁面稱為機器頁面;將虛擬 機中客戶操作系統管理的內存稱為物理內存(以"頁面"為單位),其中的頁面 稱為物理頁面。如圖1所示,所述第一物理主機上創(chuàng)建有遠程交換空間,用于存儲所述第 二物理主機上的虛擬機的內存交換文件;所述遠程交換空間的大小與虛擬機的 物理內存相等,以保證每一個物理頁面都能交換到遠程交換空間上;為了提高 內存交換的執(zhí)行效率,將遠程交換空間建立在第一物理主機的內存上。所述第二物理主機上部署有虛擬化環(huán)境,其上運行至少一個虛擬機。在創(chuàng) 建虛擬機時,為該虛擬機分配一定數量的機器內存。在初始化時,機器內存中 的頁面不與任何物理頁面綁定,只有在客戶操作系統訪問物理頁面時,再為所 要訪問的物理頁面分配機器頁面。在某一時刻,虛擬機上的客戶操作系統訪問物理頁面時,虛擬機管理器確 定機器內存中的空閑頁面是否足以分配給虛擬機所要訪問的物理頁面,即判斷 空閑頁面的數量是否大于所需頁數;若所述空閑頁面不足,則從機器內存的活 動頁面(即已分配給物理頁面的機器內存)中釋放非活躍的(即最近沒有訪問 過的和/或暫時不用的)機器頁面,并將映射了所述機器頁面的物理頁面的內 容傳送到所述第一物理主機的遠程交換空間上。其中,當機器頁面被釋放時, 所述機器頁面成為空閑頁面。所述第二物理主才幾在確定機器內存中的空閑頁面充凈谷時,為虛擬才幾所要訪 問的物理頁面分配機器頁面,建立所述分配的機器頁面與所要訪問的物理頁面 之間的映射關系,所述機器頁面成為活動頁面; 、進一步的,虛擬機管理器判斷所要訪問的物理頁面的內容是否在所述第一 物理主機的遠程交換空間上,若是,則從所述遠程交換空間中讀取所述物理頁面的內容,并寫入分配給所述物理頁面的機器頁面中。所述第二物理主機包括實現遠程內存交換的裝置,如圖1中所示,實現遠程內存交換的裝置包括頁面回收模塊1和遠程發(fā)送模塊2,其中所述頁面回收模塊1用于從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面;所述遠程發(fā)送模塊2用于將映射了所述頁面回收模塊1所釋放的機器頁面 的物理頁面的內容傳送到遠程交換空間。進一步的,如圖2所示,本發(fā)明的又一實施例中,所述實現遠程內存交換 的裝置還可以包括頁面綁定模塊3,用于從機器內存的空閑頁面中,為虛擬機所要訪問的物理 頁面分配機器頁面,建立所述分配的機器頁面與所要訪問的物理頁面之間的映 射關系。頁面內容確定模塊4,用于確定虛擬機所要訪問的物理頁面的內容是否在遠 程交換空間中;空間中時,從所述遠程交換空間中讀取所述物理頁面的內容,并寫入分配給所 述物理頁面的;^幾器頁面中。本發(fā)明實施例提供的實現遠程內存交換的系統,在高速網絡的支持下,將 虛擬機的部分內存高效地交換到其它物理主機上,從而使得虛擬機上的操作系 統和應用軟件能夠透明地跨越物理主機4吏用內存資源,提高在一組物理主機上 聚合虛擬機的數量和執(zhí)行效率,使得在充分保證虛擬機頁面交換性能的前提下, 實現對物理資源更高的利用率,降低總體擁有成本。進一步的,參見圖3,所述頁面回收模塊1包括活躍級別確定單元11,用于掃描虛擬機的機器內存中的活動頁面,確定各 個活動頁面的活躍級別;頁面釋放單元12,用于釋放處于非活躍級別的機器頁面,刪除所述釋放的 機器頁面與對應的物理頁面之間的映射關系;在遠程內存交換的過程中,機器內存的空閑頁面不足以分配給虛擬機所要 訪問的物理頁面時,所述頁面回收模塊1被激活,通過反復地掃描活動頁面來 選出非活躍的機器頁面,并交換到設置在其它物理主機上的遠程交換空間上。 為了區(qū)分活動頁面中頁面的活躍程度,本發(fā)明實施例將活動頁面區(qū)分為四種狀 態(tài),并采用Active才示志和Referenced才示志來表示,長口下狀態(tài)①Active=l, Referenced=l,頁面活躍且最近^皮訪問過;狀態(tài)②Active=l, Referenced=0,頁面活i 天但最近沒有訪問過; 狀態(tài)③Active=0, Referenced=l,頁面非活躍^旦最近凈皮訪問過; 狀態(tài)@: Active=0, Referenced=0,頁面非活3夭且很久沒有訪問過。 如圖4所示,是本發(fā)明實施例提供的頁面狀態(tài)轉移示意圖,頁面的四種狀態(tài)以及它們之間的轉換關系如下一個機器頁面剛剛成為活動頁面時,它就進入"最活躍"的狀態(tài)①;在每次掃描活動頁面時,都會將Referenced標志清零,從而降低了頁面的活躍級別 (從狀態(tài)①到狀態(tài)②,或從狀態(tài)③到狀態(tài)④)。當頁面的活躍級別變?yōu)闋顟B(tài)②時,就有可能將它置為"非活躍"的狀態(tài)③,處于非活躍狀態(tài)的頁面是很有可能在不久的將來被換出的。出于性能考慮,并不會將掃描到的任何一個處于狀態(tài)②的頁面都置為狀態(tài)③,例如,如果某個頁面是客戶操作系統Guest OS的頁表,則它通常不應該被淘汰。頁面回收模塊1會反復地執(zhí)行掃描,每次掃描時,都會重新確定各個活動頁面的活躍級別,使得它們趨向"最不活躍"的狀態(tài)④。最后,選擇處于狀態(tài)④的機器頁面換出,當換出了足夠多的機器頁面后,整個過程就會停止。在高速網絡的支持下,所述第一物理主機與第二物理主機之間通過遠程交換協議進行內存交換。其中,如圖5所示,所述遠程交換協議的格式如下所述遠程交換協議包括協議頭和協議數據兩部分,其中協議頭指明了控制命令、需要交換的頁面號、以及一些標志位;協議數據包含了被交換頁面的內容。CMD表示控制命令,支持的控制命令有SENDPAGE,表示發(fā)送頁面數據; GETPAGE,表示請求頁面數據;CONFIRM,表示確認頁面?zhèn)魉停划斂刂泼?為SENDPAGE時,所述遠程交換協議將包含協i義tt據部分。Count表示需要交換的頁面數,遠程交換協議支持一次傳送多個頁面,Count 的值決定了后續(xù)VMID/GFN對的個數。VMID/GFN表示要交換的頁面的虛擬機編號和物理頁面號,這個二元組決 定了交換空間的位置。Flags表示額外的標志,支持的標志有S (Shared)標志,當控制命令為 SENDPAGE時,如果S標志位被設置,則表示本次命令中的所有VMID/GFN對 都只對應一個頁面數據,因此協議數據部分將只包含一個頁面的內容;如果S標志位沒有設置,則表明本次命令中的每個VMID/GFN對分別對應 一個頁面數 據,因此協議的數據部分將包括Count個頁面的內容;L (Large)標志,當控制 命令為SENDPAGE時,如果該位被設置,則表明頁面的大小是4MB,否則采 用普通的4KB頁。
其中,第一物理主機上部署有交換服務進程,分配一定數量的內存頁面作 為遠程交換空間,當第一物理主機從遠程交換協議中獲悉第二物理主機需要將 內存頁面交換到遠程交換空間時,第一物理主機分配內存頁面存放所述第二物 理主機的內存交換文件;當第二物理主機需要將內存交換文件讀取回去時,第 一物理主機把頁面內容通過高速網絡傳送回第二物理主機,同時釋放存儲所述 頁面內容的頁面,以用于進^f亍后續(xù)的內存交換。
本發(fā)明實施例提供的實現遠程內存交換的裝置及系統,在高速網絡的支持 下,利用遠程物理主機的內存資源作為內存交換文件的存儲介質,比使用本地 磁盤作為交換空間的執(zhí)行效率更高;且在虛擬機的物理內存配置一定時,只需 配置較少的機器內存給虛擬機,就能達到配置較多內存但使用本地磁盤作為交 換空間的性能。因此,在遠程內存交換的支持下,可提高在一組物理主機上聚 合虛擬機的數量和執(zhí)行效率。
參見圖6,是本發(fā)明實施例提供的實現遠程內存交換的方法的流程示意圖。
SIOO,從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面。
在創(chuàng)建虛擬機時,為該虛擬機分配一定數量的機器內存,在初始化時,機 器內存中的頁面不與任何物理頁面綁定,只有在客戶操作系統訪問物理頁面時, 再為所要訪問的物理頁面分配機器頁面。當虛擬機上的客戶操作系統訪問物理 頁面時,需要確定機器內存中的空閑頁面是否足以分配給所述虛擬機所要訪問 的物理頁面。在確定空閑頁面不足時,從機器內存的活動頁面(即已映射有物 理頁面)中釋放非活躍的機器頁面。
進一步的,所述從機器內存的活動頁面中釋放非活躍的機器頁面包括反 復掃描機器內存中的活動頁面,并在每次掃描時重新確定各個活動的機器頁面 的活躍級別;最后,將處于非活躍(即最近沒有訪問過的和/或暫時不用的) 級別的機器頁面換出,刪除所述換出的機器頁面與對應的物理頁面之間的映射 關系,所述^L器頁面成為空閑頁面。5101, 將映射了所述被釋放的機器頁面的物理頁面的內容傳送到遠程交換 空間上。
其中,所述遠程交換空間設置遠程物理主機的內存上,用于存儲本地物理 主機的虛擬機的內存交換文件,所述遠程交換空間的大小與本地物理主機上的 虛擬機的物理內存相等,以保證每一個物理頁面都能交換到遠程主機的交換空 間上。。
當活動的機器頁面被釋放,成為空閑頁面后,將映射了所述機器頁面的物 理頁面的內容傳送到遠程交換空間上,對所述物理頁面的內容進行保護,可保 證在下一次對所述物理頁面進行訪問時,不影響虛擬機的正常運行。
5102, 從機器內存的空閑頁面中,為虛擬機所要訪問的物理頁面分配機器 頁面,建立所述分配的機器頁面與所要訪問的物理頁面之間的映射關系,所述 才幾器頁面成為活動頁面。
5103, 確定虛擬機所要訪問的物理頁面的內容是否在遠程交換空間上,若 是,執(zhí)行步驟S104;
S104,從遠程交換空間中讀取所述物理頁面的內容,并將所述內容寫入分 配給所述物理頁面的才幾器頁面中。
本發(fā)明實施例提供的實現遠程內存交換的方法,在高速網絡的支持下,將 虛擬機的部分內存高效地交換到其它物理主機上,從而使得虛擬機上的操作系 統和應用軟件能夠透明地跨越物理主機使用內存資源,提高在一組物理主機上 聚合虛擬機的數量和執(zhí)行效率,使得在充分保證虛擬機頁面交換性能的前提下, 實現對物理資源更高的利用率,降^[氐總體擁有成本。
參見圖7,是本發(fā)明實施例提供的遠程內存交換系統的一個實施例的組成示 意圖。
本發(fā)明實施例中,在一個高速網絡上部署兩臺物理主才幾71和72,其中物理 主機71作為本地主機,其上部署了支持動態(tài)內存映射的KVM (Kernel-based Virtual Machine,基于核心的虛擬機)虛擬化環(huán)境,還包括實現遠程內存交換的 裝置;物理主機72作為遠程主機創(chuàng)建有遠程交換空間,且其上部署一個交換服 務進程。
在本地主機71中,KVM部分功能主要由虛擬機引擎來實現,例如影子頁 表的轉換、遠程調頁及回收。影子頁表建立了虛擬機物理內存到虛擬機管理器頁面池中的機器內存的映 射關系。其中,可以采用一個大小為lpl的數組來表示所述映射關系,如
phys一mem[] (p為虛擬坤幾所見的物理內存集合)。該it組的元素定義如下若 phys一mem[p]元素值為NULL時,表明一個物理頁面還未和具體的機器頁面綁 定,也就是還未分配具體的才幾器頁面給該物理頁面;例如,若phys_mem[p] = m, 則phys—mem[p]指向機器頁面m,表明物理頁面p與機器頁面m綁定。
進一步的,為了找到所有映射了某個機器頁面的所有影子頁表項,還釆用 了 "逆映射"數據結構。逆映射是一種能夠快速獲得映射原像的數據結構,當 虛擬機管理器更新影子頁表時,同步更新對應的逆映射。
如圖7中所示的頁面池是用于維護虛擬機管理器VMM分配給某個虛擬機 的全部內存的數據結構,所述頁面池包括空閑池和活動池。空閑池包含了當 前分配給該虛擬機、但未被虛擬機使用的所有機器頁面,而活動池則包含了所 有已被虛擬機映射使用的機器頁面。所述頁面池包含以下操作
分配將一個頁面乂人空閑池移入活動池,并且〗呆i正為該頁面建立映射;
返還將一個頁面從活動池放回空閑池,之前刪除與該頁面有關的所有內 存映射;
擴大將某些機器頁面加入頁面池的空閑池中,增大虛擬機所能使用的機 器內存;
收縮將某些機器頁面從頁面池的空閑池中刪除,減小虛擬機所能使用的 機器內存。
上述頁面池釆用兩個雙向《連表來實現,分別用于表示活動池和空閑池。當 一個機器頁面的描述符被加到某個鏈表中時,就表示該頁面已被加入對應的頁 面池中。其中,所述機器頁面池的描述符是用于表示機器頁面的數據結構,包 含有以下信息對應的機器頁面號、該頁面被映射使用的次數以及該頁面的使 用狀態(tài)。
當物理主機71的機器內存不足時,所述實現遠程內存交換的裝置從頁面池 的活動池中選擇非活躍的機器頁面,將它們放回空閑池中,并確保從影子頁表 中刪除對所述機器頁面的映射。同時,所述實現遠程內存交換的裝置還將選中 的機器頁面的內容通過遠程交換協議傳輸到遠程交換空間上;當物理主機71 需要訪問遠程交換空間中的內容時,實現遠程內存交換的裝置通過遠程交換協議,向遠程主才幾72請求需要訪問的物理頁面的內容,/人空閑池中為所述頁面
內容分配機器頁面,并將所述機器頁面放入活動池中,以供虛擬機使用。
其中,在機器內存的空閑頁面不足時,頁面淘汰算法被激活,通過反復掃 描活動頁面,選出非活躍的機器頁面交換到遠程交換空間上。
在遠程主機72上,分配一定數量的內存頁面為本地主才幾71上的每個虛擬 機創(chuàng)建一個交換空間,每個交換空間的大小與對應虛擬機上的客戶操作系統管 理的物理內存相等。具體的做法是,利用Li皿x的mmap()方法,在交換服務進 程上創(chuàng)建一個虛擬地址空間,這個虛擬地址空間的大小和交換空間的大小是一 致的,而且和一個持久的文件相關聯。當本地主機71需要把內存頁面交換到遠 程主機72時,從交換空間中分配頁面存》文本地主機71的頁面內容;當本地主 才幾71請求4巴內存頁面交換回去時,遠程主機72通過網^各將所述頁面內容傳送 回本地主機71上,同時釋放所述頁面用于進行后續(xù)的內存交換。
圖7中示出了兩個虛擬機,兩個虛擬機都能與遠程交換空間進行遠程內存 交換,為方便說明,僅以其中的一個虛擬機的遠程內存交換的處理流程為例進 ^f亍說明。如圖8所示,遠程內存交換的處理流程如下
S200,虛擬機上的客戶4喿作系統Guest OS訪問虛擬地址v, KVM (Kernel-based Virtual Machine,基于核心的虛擬機)獲知與虛擬地址v對應的 物理地址p未與機器頁面綁定。
在創(chuàng)建虛擬機時,為該虛擬機分配一定數量的機器頁面,并將所述機器頁 面放入頁面池的空閑池中,并置數組phys_mem[]的各個元素為NULL;在某個 時刻,虛擬機上的Guest OS訪問了虛擬地址v,由于影子頁表中沒有關于v的 地址轉換映射,虛擬機將發(fā)生頁故障,并陷入KVM。
KVM根據被中斷的虛擬CPU的頁表指針寄存器(如x86處理器的CR3寄 存器),獲得Guest OS的頁目錄指針,并模擬MMU ( Memory Management Unit, 存儲器管理單元)逐級找到虛擬地址v所對應的頁表項。在這里,假設該頁表 項存在,而且沒有權限錯誤。同時,KVM會根據每一級頁表的物理地址,查詢 影子頁表的哈希表,獲得與該頁表對應的影子頁表,如果該級頁表沒有對應的 影子頁表,則分配新的影子頁面,并與上一級影子頁表相關聯,最后,KVM得 到與v對應的影子頁表項指針。
KVM從GuestOS的頁表項中讀出與虛擬地址v對應的物理地址p。在確認p是該虛擬機的合法物理地址后,KVM查詢數組phys—mem[p],當發(fā)現其值為 NULL時,獲知與虛擬地址v對應的物理地址p未與才幾器頁面綁定。
S201, KVM判斷頁面池中是否有足夠多的空閑頁面,若有,則轉到步驟 S205;如果頁面池中空閑頁面的數量小于所需頁數,則在此等待,執(zhí)行步驟S202。 S202,從活動池中刪除非活躍的機器頁面,將所述機器頁面加入空閑池中。 實現遠程內存交換的裝置根據特定的頁面淘汰算法,從活動池中選擇一組 頁面,并將這些頁面從活動池中刪除;KVM依次查詢所述從活動池中刪除的頁 面的逆映射鏈,找到所有映射了所述刪除頁面的影子頁表項,先記錄表項的"臟" 位,再將這些頁表項置為空,同時也刪除對應的逆映射;將所述刪除了的非活 躍的機器頁面加入空閑池中。最后,KVM刷新虛擬機的TLB(Translation Lookside Buffer,翻譯后援存儲器);所述"臟"位用于表示相應頁面的內容是否已被改 寫。
若是,執(zhí)行步驟S204,若否,則轉到步驟S205。
其中,可通過"臟"位來確定所述頁面內容是否被改寫,如果該頁面是臟 的,即表明所述頁面內容被改寫過,需要對所述頁面內容進行保護。
S204,將所述物理頁面的內容傳送到遠程交換空間,同時標記所述物理頁 面已被換出;
如果該頁面是臟的,即所述頁面^L改寫過,則KVM通過高速網絡,將所述 頁面的物理頁面號及頁面內容通過遠程交換協議傳輸到遠程主機上;并在 phys—mem[]數組中,將與所述頁面的物理頁面號對應的數組元素置為NULL, 刪除所述物理頁面與機器頁面的映射關系,同時標記所述物理頁面已一皮換出。
S205,將^L器頁面n^人空閑池中刪除,并加入活動池,建立m與p的映射 關系。
從空閑池中選擇機器頁面m, KVM將機器頁面m從空閑池中刪除,并加 入活動池,分配機器頁面給物理頁面p,設置phys—mem[p] = m,物理頁面p與 機器頁面m建立映射關系。
S206,判斷物理地址p對應的頁面是否在之前被換出,若是,執(zhí)行步驟S207, 則若,則轉到步驟S208。其中,KVM根據物理地址p對應頁面的標記來判斷該 頁面是否之前^皮換出。5207, 向遠程主機請求物理地址p的頁面內容,并將所述內容寫入機器頁 面m中。
通過遠程交換協議,向遠程主機請求物理地址p的頁面內容,并將所述頁 面內容寫入才幾器頁面m中。
5208, KVM恢復虛擬機的執(zhí)行。
將機器頁面m的機器地址寫入與導致故障的虛擬地址v對應的影子頁表項, 并將這個頁表項指針添加到機器頁面m的逆映射鏈中。最后,KVM刷新虛擬機 的TLB,恢復虛擬機的執(zhí)行。
需要說明的是,上述僅以KVM (Kernel-based Virtual Machine,基于核心的 虛擬機)虛擬化環(huán)境為例對虛擬機的遠程內存交換進行說明,本發(fā)明實施例同 樣可以應用到其它類型的虛擬化環(huán)境中。
本發(fā)明實施例提供的實現遠程內存交換的系統,在高速網絡的支持下,將 虛擬機的部分內存高效地交換到其它物理主機上,從而使得虛擬機上的操作系 統和應用軟件能夠透明地跨越物理主機使用內存資源,提高在一組物理主機上 聚合虛擬機的數量和執(zhí)行效率,使得在充分保證虛擬機頁面交換性能的前提下, 實現對物理資源更高的利用率,降低總體擁有成本。
本發(fā)明實施例提供的實現遠程內存交換的方法、裝置及系統,利用遠程主 機的內存資源作為虛擬機的內存交換文件的存儲介質,可提高內存交換的執(zhí)行 效率;將本地主機不常用的內存頁面交換到遠程主機上,可實現利用單片幾上有 限的物理內存資源,就能滿足較多數量的虛擬機的內存需求,使得虛擬機在內
存需求達到物理內存峰值的情況下,仍能以較高的效率執(zhí)行;由于遠程內存交
換在虛擬機管理器層次實現,對上層虛擬機及其上的客戶操作系統完全透明, 使得虛擬機上的客戶操作系統和應不需要經過修改,就可以得到性能的提升。 本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程, 是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于 一計算 機可讀取存儲介質中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。
其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-OnlyMemory, ROM)或隨機存儲記憶體(RandomAccess Memory, RAM)等。
以上實施例僅用以說明本發(fā)明而并非限制本發(fā)明所描述的技術方案;因此, 盡管本說明書參照上述的各個實施例對本發(fā)明已進行了詳細的說明,但是,本領域的普通技術人員應當理解,仍然可以對本發(fā)明進行修改或者等同替換;而 一切不脫離本發(fā)明的精神和范圍的技術方案及其改進,其均應涵蓋在本發(fā)明的 權利要求范圍當中。
權利要求
1、一種實現遠程內存交換的方法,其特征在于,包括從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面;將映射了所述機器頁面的物理頁面的內容傳送到遠程交換空間,其中,所述遠程交換空間建立在遠程物理主機上。
2、如權利要求1所述的實現遠程內存交換的方法,其特征在于,還包括 從機器內存的空閑頁面中,為虛擬機所要訪問的物理頁面分配機器頁面,建立
3、如權利要求2所述的實現遠程內存交換的方法,其特征在于,還包括 確定所述虛擬機所要訪問的物理頁面的內容是否在遠程交換空間中; 若是,從所述遠程交換空間中讀取所述物理頁面的內容,并寫入分配給所 述物理頁面的^L器頁面中。
4、 如權利要求1所述的實現遠程內存交換的方法,其特征在于,所述從虛 擬機的機器內存中釋放機器頁面具體包括掃描虛擬機的機器內存中的活動頁面,確定各個活動頁面的活躍級別; 釋放處于非活躍級別的機器頁面,刪除所述釋放的機器頁面與對應的物理 頁面之間的映射關系。
5、 如權利要求1所述的實現遠程內存交換的方法,其特征在于,所述遠程 交換空間建立在所述遠程物理主^L的內存上。
6、如權利要求1所述的實現遠程內存交換的方法,其特征在于,所述遠程 交換空間的大小與所述虛擬^/L的物理內存相等。
7、 一種實現遠程內存交換的裝置,其特征在于,包括頁面回收模塊,用于從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面;遠程發(fā)送模塊,用于將映射了所述頁面回收模塊所釋放的機器頁面的物理 頁面的內容傳送到遠程交換空間。
8、 如權利要求7所述的實現遠程內存交換的裝置,其特征在于,所述裝置 還包括頁面綁定模塊,用于從機器內存的空閑頁面中,為虛擬機所要訪問的物理 頁面分配^/L器頁面,建立所述分配的才幾器頁面與所要訪問的物理頁面之間的映射關系。
9、 如權利要求7或8所述的實現遠程內存交換的裝置,其特征在于,所述 裝置還包括頁面內容確定模塊,用于確定虛擬機所要訪問的物理頁面的內容是否在遠 程交換空間中;遠程讀取模塊,用于在確定虛擬機所要訪問的物理頁面的內容在遠程交換 空間中時,從所述遠程交換空間中讀耳又所述物理頁面的內容,并寫入分配給所 述物理頁面的才幾器頁面中。
10、 如權利要求7所述的實現遠程內存交換的裝置,其特征在于,所述頁 面回收模塊包括活躍級別確定單元,用于掃描虛擬機的機器內存中的活動頁面,確定各個 活動頁面的活躍級別;頁面釋放單元,用于釋放處于非活躍級別的機器頁面,刪除所述釋放的機 器頁面與對應的物理頁面之間的映射關系。
11、 一種實現遠程內存交換的系統,其特征在于,包括第一物理主機和第 二物理主纟幾;所述第一物理主機上創(chuàng)建有遠程交換空間,用于存儲所述第二物理主機上 的虛擬機的內存交換文件;所述第二物理主機上設有虛擬機,從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面,將映射了所述機器頁面的物理頁面的內容傳送 到所述第 一物理主機的遠程交換空間上。
12、 如權利要求11所述的實現遠程內存交換的系統,其特征在于,所述第二物理主機具體包括頁面回收模塊,用于從虛擬機的機器內存中釋放機器頁面,所述機器頁面 映射有物理頁面;遠程發(fā)送模塊,用于將映射了所述頁面回收模塊所釋放的機器頁面的物理 頁面的內容傳送到遠程交換空間;頁面綁定模塊,用于從機器內存的空閑頁面中,為虛擬機所要訪問的物理 頁面分配機器頁面,建立所述分配的機器頁面與所要訪問的物理頁面之間的映 射關系。
13、 如權利要求11或12所述的實現遠程內存交換的系統,其特征在于, 所述第二物理主機還包括頁面內容確定模塊,用于確定虛擬機所要訪問的物理頁面的內容是否在遠 程交換空間中;遠程讀取模塊,用于在確定虛擬機所要訪問的物理頁面的內容在遠程交換 空間中時,從所述遠程交換空間中讀取所述物理頁面的內容,并寫入分配給所 述物理頁面的機器頁面中。
14、 如權利要求11所述的實現遠程內存交換的系統,其特征在于,所述遠 程交換空間建立在所述第 一物理主機的內存上,所述遠程交換空間的大小與所 述第二物理主機上的虛擬才幾的物理內存相等。
全文摘要
本發(fā)明實施例公開了一種實現遠程內存交換的方法、裝置及系統,所述方法包括從虛擬機的機器內存中釋放機器頁面,所述機器頁面映射有物理頁面;將映射了所述機器頁面的物理頁面的內容傳送到遠程交換空間,其中,所述遠程交換空間建立在遠程物理主機上。本發(fā)明實施例公開的實現遠程內存交換的裝置包括頁面回收模塊及遠程發(fā)送模塊。采用本發(fā)明實施例,將虛擬機的部分內存交換到遠程物理主機的空閑內存上,提高在一組物理主機上聚合虛擬機的數量和執(zhí)行效率,使得在充分保證虛擬機頁面交換性能的前提下,實現對物理主機更高的利用率,降低總體擁有成本。
文檔編號G06F12/10GK101403992SQ20081002957
公開日2009年4月8日 申請日期2008年7月18日 優(yōu)先權日2008年7月18日
發(fā)明者全小飛, 羅英偉 申請人:華為技術有限公司;北京大學