專利名稱:基于分布式內(nèi)存虛擬化的numa結(jié)構(gòu)的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明利用最新的硬件虛擬化技術(shù),采用國際上慣用的分布式共享存儲算法對內(nèi)存資源 進行整合.它涉及計算機虛擬化技術(shù)中的內(nèi)存虛擬化以及分布式系統(tǒng)中的分布式共享存儲, 尤其涉及一種基于分布式內(nèi)存虛擬化的非均勻內(nèi)存訪問(NUMA)結(jié)構(gòu)的實現(xiàn)方法。屬于計算 機技術(shù)領(lǐng)域。
背景技術(shù):
早在上個世紀60年代末70年代初IBM公司就在大型機上實現(xiàn)了商用的虛擬機(Virtual Machine, VM)。虛擬機可以看作通過軟件模擬或者硬件輔助的具有完整硬件系統(tǒng)功能的、運 行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)。經(jīng)典的虛擬機實現(xiàn)借助虛擬機監(jiān)控器(Virtual Machine Monitor, XEN)來完成。虛擬機監(jiān)控器用于控制虛擬機行為并通過陷入-模擬的方 式完成對必要事件的處理或模擬。下面介紹幾種虛擬化方式
1.軟件虛擬化
全虛擬化
完全虛擬化的典型代表產(chǎn)品是VM370和VMWare。
VMM在客戶操作系統(tǒng)和硬件之間用于工作協(xié)調(diào)。 一些受保護的指令必須由VMM來捕獲和 處理。因為操作系統(tǒng)是通過來分享底層硬件。對底層硬件進行了完全虛擬化的實現(xiàn),而并非 是半虛擬化的方法提供給Guest OS—個修改后的接口。
完全虛擬化技術(shù)最大的好處就是可以無需修改操作系統(tǒng),直接移植到虛擬環(huán)境中,支持 多個Guest 0S。但是完全虛擬化的缺點就是虛擬機的Guest OS的系統(tǒng)性能會受到影響,而 且往往比原有的系統(tǒng)性能下降不少。尤其是在IA32等常見體系結(jié)構(gòu)上。類似VMWare的軟件 往往性能下降特別嚴重。
完全虛擬化雖然能夠更容易地支持商業(yè)版本的操作系統(tǒng),但是卻大大降低了性能。其他 常見的完全虛擬化軟件包括微軟推出的Microsoft Virtual Server。準虛擬化
與二進制翻譯動態(tài)修改客戶操作系統(tǒng)不同,準虛擬化方式采用靜態(tài)改寫客戶操作系統(tǒng)源 代碼的方式顯式與虛擬機監(jiān)控器(在這種方式下也被稱為超級監(jiān)控器hypervisor)協(xié)作。 這種方式的特點是
通過客戶操作系統(tǒng)與超級監(jiān)控器(hypervisOT)之間的主動協(xié)作提高性能以及效率,更 改客戶操作系統(tǒng)源代碼將不可虛擬化指令替換為直接與超級監(jiān)控器通信的超級調(diào)用 (hypercall)。監(jiān)控器還提供了內(nèi)核其他關(guān)鍵操作的接口如內(nèi)存管理,中斷處理等。 準虛擬化與全虛擬化存在顯著的區(qū)別
全虛擬化的虛擬機上運行未經(jīng)修改的客戶操作系統(tǒng),操作系統(tǒng)對不能感知自己運行于虛 擬機制上,敏感的操作系統(tǒng)調(diào)用會引發(fā)陷入。
準虛擬化的操作系統(tǒng)可以感知自己運行在虛擬機制上,并通過超級調(diào)用與超級監(jiān)控器通信。
準虛擬化的代表是由劍橋大學研發(fā)的Xen。 Xen運行在最高特權(quán)級做為超級監(jiān)控器 (Hypervisor)監(jiān)控虛擬機行為,虛擬機中運行經(jīng)過修改過的操作系統(tǒng),這些操作系統(tǒng)通過 超級調(diào)用的方式請求Xen完成關(guān)鍵的特權(quán)操作,包括內(nèi)存管理,1/0操作等。另外Xen最新 版本還支持硬件輔助的虛擬化技術(shù)實現(xiàn)全虛擬化,被稱為硬件虛擬機(Hardware Virtual Machine)。準虛擬化的特點是其高性能,在大多數(shù)情況下準虛擬化可以達到原始性能的 90%_95%。
相對于Xen采用的手工更改客戶操作系統(tǒng)源代碼的方式,之后又有人提出了一種半自動 化的更改客戶操作系統(tǒng)的方法,稱為預虛擬化(Pre-virtulization)。這種方法的特點是在 編譯器完成編譯之后,在匯編器開始匯編之前插入一個腳本。該腳本以自動化的方式替換不 可虛擬化的指令。這種方式已經(jīng)在L4, vNUMA中實現(xiàn),并可以極大地減少準虛擬化帶來的 操作系統(tǒng)移植的工作量。
由于支持準虛擬化的虛擬機監(jiān)控器種類越來越多,所以急需一種hypercall標準來規(guī)范 虛擬機監(jiān)控器超級調(diào)用接口以及避免重復進行操作系統(tǒng)移植。在這方面,Lirmx走在了前列 目前Linux準虛擬化標準paravirt_ops已經(jīng)被合并到Linux源代碼樹中。這個標準規(guī)范了 Linux支持的超級調(diào)用接口?;谠摻涌诘氖痉短摂M機Lguest ,已經(jīng)被合并到Linux源代 碼樹中。
2.硬件虛擬化
因為軟件虛擬化技術(shù)的種種難以克服的缺點,CPU廠商推出了基于CPU的硬件虛擬化技 術(shù)。支持虛擬技術(shù)的CPU帶有特別優(yōu)化過的指令集來控制虛擬過程,通過這些指令集,XEN 會很容易提高性能,相比軟件的虛擬實現(xiàn)方式會很大程度上提高性能。硬件虛擬化技術(shù)可提 供基于芯片的功能,借助兼容XEN軟件能夠改進純軟件解決方案。由于虛擬化硬件可提供全 新的架構(gòu),支持操作系統(tǒng)直接在上面運行,從而無需進行二進制轉(zhuǎn)換,減少了相關(guān)的性能開 銷,極大簡化了XEN設(shè)計,進而使XEN能夠按通用標準進行編寫,性能更加強大。另外,在 純軟件XEN中,目前缺少對64位客戶操作系統(tǒng)的支持,而隨著64位處理器的不斷普及,這 一嚴重缺點也日益突出。而CPU的虛擬化技術(shù)除支持廣泛的傳統(tǒng)操作系統(tǒng)之外,還支持64 位客戶操作系統(tǒng)。
虛擬化技術(shù)是一套解決方案。完整的情況需要CPU、主板芯片組、BIOS和軟件的支持, 例如XEN軟件或者某些操作系統(tǒng)本身。即使只是CPU支持虛擬化技術(shù),在配合XEN的軟件情況下,也會比完全不支持虛擬化技術(shù)的系統(tǒng)有更好的性能。
兩大CPU廠商Intel和AMD都已經(jīng)制定了硬件虛擬化策略,并發(fā)布了一系列支持虛擬化 的產(chǎn)品。Intel已經(jīng)發(fā)布了具有Intel VT虛擬化技術(shù)的一系列處理器產(chǎn)品,包括桌面平臺 的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列,還有Core Duo系列 和Core Solo系列中的部分產(chǎn)品,以及服務(wù)器/工作站平臺上的Xeon LV系列、Xeon 5000 系列、Xeon 5100系列、Xeon MP 7000系列以及Itanium 2 9000系列同時絕大多數(shù)的Intel 下一代主流處理器,包括Merom核心移動處理器,Conroe核心桌面處理器,Woodcrest核心 服務(wù)器處理器,以及基于Montecito核心的Itanium 2高端服務(wù)器處理器都將支持Intel VT 虛擬化技術(shù)。
而AMD方面也己經(jīng)發(fā)布了支持AMD Virtual Technology (AMD VT)虛擬化技術(shù)的一系 列處理器產(chǎn)品,包括Socket SI接口的Turion 64 X2系列以及Socket AM2接口的Athlon 64 X2系列和Athlon 64FX系列,以及最新的Socket F接口的0pteron等等。
發(fā)明內(nèi)容
1目的:
本發(fā)明的目的是提供一種基于分布式內(nèi)存虛擬化的NUMA結(jié)構(gòu)的實現(xiàn)方法,它主要采用 了當前主流處理器的硬件輔助虛擬化技術(shù),結(jié)合分布式共享存儲算法對多機資源進行整合, 實現(xiàn)硬件輔助策略下的NUMA結(jié)構(gòu)的單一物理地址空間,對多機內(nèi)存資源進行統(tǒng)一管理和使 用。
2技術(shù)方案:
2. 1設(shè)計概述
本發(fā)明專利基于多機集群系統(tǒng),集群中各節(jié)點的內(nèi)存以分布的方式位于各個節(jié)點之間, 集群中的計算機需要通過網(wǎng)絡(luò)連接,通過網(wǎng)絡(luò)傳遞消息。本發(fā)明專利的目標是要基于機群系 統(tǒng),利用虛擬化和分布式共享技術(shù)提供具有共享單一地址空間特性的虛擬機,但整個系統(tǒng)的 內(nèi)存容量是各個節(jié)點內(nèi)存容量加成。多個節(jié)點的多個處理器之間共享內(nèi)存,并通過共享內(nèi)存 完成多機資源的整合。
本發(fā)明專利通過借助部署在機群每個節(jié)點上的Xen,在機群系統(tǒng)結(jié)構(gòu)上提供具有共享物 理內(nèi)存特性的客戶系統(tǒng)。通過在Xen中實現(xiàn)分布式共享存儲為客戶系統(tǒng)提供共享的物理地址 空間,并借助硬件輔助的內(nèi)存虛擬化技術(shù)來實現(xiàn),使現(xiàn)有操作系統(tǒng)無需修改即可運行,從而 實現(xiàn)完全虛擬化。以虛擬機中的客戶操作系統(tǒng)的觀點來看,其運行于正常的單機節(jié)點之上。
在Xen中實現(xiàn)內(nèi)存虛擬化是為客戶操作系統(tǒng)提供單一客戶物理地址空間,并且對內(nèi)存尋 址過程進行虛擬化,同時結(jié)合分布式共享存儲為客戶操作系統(tǒng)呈現(xiàn)與單節(jié)點條件下無異的的 環(huán)境。
分布式共享存儲實現(xiàn)緩存一致性,使該客戶操作系統(tǒng)看不到具體的共享內(nèi)存實現(xiàn)過程, 從而保證了客戶操作系統(tǒng)以及應(yīng)用程序運行的正確性。整個系統(tǒng)按功能可以分為4個模塊-
1) EPT模塊用于為虛擬機提供一個共享客戶物理地址空間。
2) NIMA模塊用于實現(xiàn)基于分布式共享存儲算法的NUMA結(jié)構(gòu)共享內(nèi)存空間。
3) ARL模塊用為其它虛擬化模塊提供訪問共享內(nèi)存的方法。
4) 其它虛擬化模塊。
與本發(fā)明相關(guān)的模塊包括 EPT模塊
Xen利用EPT為虛擬機提供虛擬化的內(nèi)存空間,地址轉(zhuǎn)換以及相應(yīng)尋址。EPT中記錄的 是客戶物理地址到機器物理地址的映射。通過查詢客戶頁表可得到客戶線性地址到客戶物理 地址的映射,再通過査詢EPT可得到客戶物理地址到機器物理地址的映射,最終得到線性地 址到機器物理地址的映射。
EPT表保存客戶物理地址到機器地址的映射,映射的內(nèi)容包括-
本地客戶物理頁面和對應(yīng)的機器頁面號。
*映射權(quán)限讀寫權(quán)限以及是否有效。
*映射類型內(nèi)存映射還是內(nèi)存映射I/0映射。
* NUMA元數(shù)據(jù)用于實現(xiàn)NUMA的相關(guān)數(shù)據(jù)結(jié)構(gòu),NUMA算法依據(jù)這些結(jié)構(gòu)做出決策。 EPT模塊維護客戶物理地址到機器物理地址的映射來實現(xiàn)內(nèi)存虛擬化,使客戶系統(tǒng)不用 考慮虛擬地址的轉(zhuǎn)換,完成對客戶系統(tǒng)的透明操作。物理硬件使用Xen維護的EPT表進行尋 址。EPT表中的映射內(nèi)容由Xen啟動時硬件完成,保存由客戶物理地址到機器地址的映射。 EPT的生成和同步由Xen負責完成,客戶系統(tǒng)的缺頁和異常都由自己完成,只有當Xen捕獲 EPT產(chǎn)生的缺頁異常時,EPT模塊才會進行同步操作。當EPT缺頁的映射為遠程映射時,就 會觸發(fā)NU做模塊進行遠程缺頁異常操作。
EPT是由系統(tǒng)啟動時自動生成并由硬件來維護的,EPT的結(jié)構(gòu)類似于普通的內(nèi)存頁表, 具有分級結(jié)構(gòu)。在虛擬機運行時,硬件使用EPT進行最終尋址。當EPT中存在有效映射項時, 此次尋址請求可以直接完成;當EPT中的映射項或者尋址請求與映射權(quán)限沖突時產(chǎn)生的缺頁 異常會被Xen所捕獲,觸發(fā)內(nèi)存虛擬化策略以及NUMA算法。
NUMA模塊
NUMA模塊主要利用現(xiàn)有的分布式共享存儲算法,實現(xiàn)NUMA結(jié)構(gòu)內(nèi)存共享,對內(nèi)存資源 進行管理。對于每個共享頁面都有唯一的home節(jié)點,home節(jié)點分布在所有節(jié)點中,每個節(jié) 點至多只能是一塊共享頁面的home。 EPT映射的是本地客戶物理地址與對應(yīng)的機器地址,因 此當客戶指令嘗試訪問本地共享頁面時和正常訪存過程相同,當訪問遠程共享頁面時就會產(chǎn) 生缺頁異常,并觸發(fā)NUMA算法從此共享頁面的home節(jié)點取得并緩存在本地。當NUMA算法 遷移對應(yīng)的頁面至本地后,會更新相應(yīng)EPT表映射。待EPT完成更新后,再次尋址此頁面就 不會引發(fā)缺頁。緩存的頁面的地址空間在所有的處理器中都是一致的,因此遠程訪問時就不 需要就行地址轉(zhuǎn)換。由于整個頁面遷移過程對客戶操作系統(tǒng)透明,使客戶操作系統(tǒng)認為自己 可以對共享的地址空間進行尋址。
客戶操作系統(tǒng)通過EPT并借助NUMA模塊完成了對整個共享地址空間的尋址。而其它的 虛擬化模塊需要直接的請求NUMA:
1)處理器虛擬化模塊在模擬指令執(zhí)行時的取指令與取操作數(shù)都必須請求NUMA模塊,因為對應(yīng)的操作數(shù)與指令所在頁面可能位于遠程。 2) 1/0虛擬化模塊:在模擬匿A的時候,對應(yīng)的客戶操作系統(tǒng)主存訪問也必須通過NUMA。
API模塊
為了實現(xiàn)單一地址空間,必須為其它的虛擬化模塊如1/0虛擬化以及指令集虛擬化模塊 提供訪問客戶操作系統(tǒng)主存的方式。與EPT不同,接口模塊就為這些模塊提供了調(diào)用NUMA 模塊的接口,其它的虛擬化模塊需要主動的調(diào)用NUMA算法,確保訪問到正確的客戶主存數(shù) 據(jù)。
2. 3工作流程
初始化階段
系統(tǒng)在初始化階段分為兩類節(jié)點系統(tǒng)中選取一個節(jié)點作為主節(jié)點,其余節(jié)點作為從節(jié)點。
EPT初始化EPT的初始化包含初始化EPT映射以及初始化NUMA元數(shù)據(jù)。系統(tǒng)初始化時, 在各自節(jié)點分配內(nèi)存供客戶操作系統(tǒng)使用,并初始化對應(yīng)的EPT映射。對于各個節(jié)點,以此 節(jié)點為home節(jié)點的共享頁面被設(shè)定為讀寫,而其他頁面映射權(quán)限被設(shè)定為缺頁。圖MA元數(shù) 據(jù)按照對應(yīng)NUMA算法的要求進行初始化工作。
客戶操作系統(tǒng)的啟動遵循SMP多處理器啟動序列首先客戶操作系統(tǒng)會在主節(jié)點的啟動 處理器(虛擬處理器)(Bootstrapping Processor, BSP)上啟動,此時對應(yīng)的虛擬處理器 位于實模式,其直接使用EPT作為頁表。當其完成頁表初始化并開啟分頁后,客戶操作系統(tǒng) 建立自己的線性地址與客戶物理地址的映射,此時虛擬處理器對應(yīng)的物理處理器使用EPT進 行實際的硬件尋址。當尋址的頁面的home節(jié)點是本節(jié)點時,不會引發(fā)缺頁,直接進行訪存; 當訪問的頁面的h咖e節(jié)點不是本節(jié)點時,就會引發(fā)缺頁,通過NUMA米快將頁面請求發(fā)送至 請求頁面的home節(jié)點,然后由home節(jié)點來處理缺頁請求。當BSP啟動輔助處理器(Auxiliary Processor, AP)時,AP會根據(jù)BSP發(fā)來的消息從指定的地址啟動。位于從節(jié)點的AP啟動 時由于指定地址對應(yīng)的映射在EPT表中可能不存在,從而引發(fā)缺頁異常,同樣通過NUMA模 塊進行頁面遷移。之后AP所需要的數(shù)據(jù)和指令都通過NUMA從所需頁面的h咖e節(jié)點遷移到 被啟動節(jié)點,這就確保了 AP的啟動和運行。當AP開啟分頁后,與BSP—樣,客戶操作系統(tǒng) 會建立自己的線性地址與客戶物理地址的映射。當多處理器啟動完畢后,整個系統(tǒng)進入正常 工作模式。
系統(tǒng)正常工作階段
系統(tǒng)中客戶操作系統(tǒng)的尋址首先會查詢客戶操作系統(tǒng)的頁表GPT,由客戶操作系統(tǒng)的線 性地址查找到客戶操作系統(tǒng)的物理地址,進而査找EPT,客戶操作系統(tǒng)的物理地址再通過EPT 表査找對應(yīng)的機器地址,若查找成果就稱為命中,此時繼續(xù)執(zhí)行訪存等指令,若沒有對應(yīng)的 機器頁面就會產(chǎn)生缺頁異常,此時EPT模塊就要與NUMA模塊進行配合,進行遠程頁面的遷 移,將遠程的頁面遷移到本地,進而執(zhí)行正常訪存操作。
與其它虛擬化模塊的協(xié)作
NUMA模塊同時負責為其它虛擬化模塊提供一個訪問主存的接口 ,確保其它虛擬化模塊可 以訪問到正確的主存的數(shù)據(jù)。當其它虛擬化模塊訪問的頁面位于遠程時,NUMA模塊負責將 其遷移到本地,并供其它的內(nèi)存虛擬化模塊訪問。
綜上所述,本發(fā)明是一種基于分布式內(nèi)存虛擬化的NUMA結(jié)構(gòu)的實現(xiàn)方法,此方法具體實現(xiàn)步驟如下 設(shè)虛擬機主存容量為M, 步驟一、準備階段
1. 各結(jié)點Xen分配EPT表所需空間,并將EPT對應(yīng)所有內(nèi)容清零;
2. 各節(jié)點Xen分別分配M大小的內(nèi)存供虛擬機使用,并按照1: 1映射的方式初始化EPT 表中客戶物理頁面到機器頁面的映射關(guān)系;
3. 所有節(jié)點的Xen標記其EPT表中以本節(jié)點為home節(jié)點的共享頁面映射有效,標記其它
所有共享頁面映射無效。
4. 各個節(jié)點將對應(yīng)虛擬處理器的頁表基址寄存器指向EPT表基址;
5. 當客戶操作系統(tǒng)開啟分頁時,Xen將對應(yīng)虛擬處理使用的頁表機制更換為對應(yīng)的客戶操 作系統(tǒng)頁表GPT基址。
步驟二、正常工作階段
在客戶操作系統(tǒng)啟動并正常運行之后,客戶操作系統(tǒng)及應(yīng)用程序在全虛擬化的環(huán)境下,與正 常的操作系統(tǒng)的尋址過程一致,此時的客戶操作系統(tǒng)尋址首先由客戶線性地址,通過查找客 戶頁表找到相應(yīng)的客戶物理地址,之后由Xen繼續(xù)尋址過程,Xen會查詢EPT表找到之前客 戶物理地址對應(yīng)的機器地址
a) 若對應(yīng)EPT映射存在且是以本節(jié)點為home節(jié)點的共享頁面則有效,然后轉(zhuǎn)向步驟三;
b) 若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為讀操作則有效,然
后轉(zhuǎn)向步驟三;
c) 若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為寫操作,或者對應(yīng) EPT映射不存在則無效,然后轉(zhuǎn)向步驟四;
步驟三、NUMA處理本地請求過程
1. 獲得請求客戶物理頁面與所需權(quán)限;
2. 若為讀操作則直接從home中或是本地cache中獲得相應(yīng)EPT表對應(yīng)的機器頁面;
3. 若為寫操作則由home節(jié)點根據(jù)home中NUMA元數(shù)據(jù)保存的該頁面的使用節(jié)點副本,向 其他節(jié)點發(fā)送頁面無效通知,之后對頁面進行寫操作。
4. 完成本地處理過程。
步驟四、NUMA處理遠程請求的過程
1. 獲取請求頁面號以及權(quán)限;
2. 若對應(yīng)EPT映射不存在且為讀操作,則需向home節(jié)點發(fā)送請求,由home節(jié)點將頁面和 權(quán)限發(fā)送到請求節(jié)點,請求節(jié)點緩存在本地cache后,繼續(xù)讀操作。
3. 若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為寫操作,或者對應(yīng)EPT 映射不存在且為寫操作,則需向home節(jié)點發(fā)送請求,由home節(jié)點根據(jù)home中NUMA元 數(shù)據(jù)保存的該頁面的使用節(jié)點副本,向其他節(jié)點發(fā)送頁面無效通知,之后將請求的頁面 副本和權(quán)限發(fā)送給請求節(jié)點,請求節(jié)點將頁面緩存在cache中后,繼續(xù)訪存操作。
4. 完成遠程處理過程。
(3)優(yōu)點及效果
通過結(jié)合內(nèi)存虛擬化技術(shù)與分布式共享存儲技術(shù),本發(fā)明為分布式系統(tǒng)提供了緊耦合的 共享內(nèi)存視圖,極大的提高了分布式系統(tǒng)中的可管理性以及可編程性。通過結(jié)合其它的虛擬 化策略,同時可以使商業(yè)化的操作系統(tǒng)以及應(yīng)用軟件跨節(jié)點的運行于分布式的集群系統(tǒng)中, 降低了軟件移植帶來的復雜度。本發(fā)明在現(xiàn)有的成熟技術(shù)基礎(chǔ)上進行創(chuàng)新,實施不難,具有 良好的使用和發(fā)展前景。
圖l系統(tǒng)整體結(jié)構(gòu)示意圖
圖2 EPT表尋址示意圖
圖3 NUMA內(nèi)存組織示意圖
圖4 NUMA與EPT寫作示意圖
具體實施例方式
見圖l、圖2、圖3、圖4所示, 一種基于分布式內(nèi)存虛擬化的NUMA結(jié)構(gòu)的實現(xiàn)方法,該方 法具體實施步驟如下 設(shè)虛擬機主存容量為M, 步驟一、準備階段
1. 各結(jié)點Xen分配EPT表所需空間,并將EPT對應(yīng)所有內(nèi)容清零;
2. 各節(jié)點Xen分別分配M大小的內(nèi)存供虛擬機使用,并按照1: 1映射的方式初始化EPT 表中客戶物理頁面到機器頁面的映射關(guān)系;
3. 所有節(jié)點的Xen標記其EPT表中以本節(jié)點為home節(jié)點的共享頁面映射有效,標記其它 所有共享頁面映射無效。
4. 各個節(jié)點將對應(yīng)虛擬處理器的頁表基址寄存器指向EPT表基址;
5. 當客戶操作系統(tǒng)開啟分頁時,Xen將對應(yīng)虛擬處理使用的頁表機制更換為對應(yīng)的客戶操 作系統(tǒng)頁表GPT基址。
步驟二、正常工作階段-
在客戶操作系統(tǒng)啟動并正常運行之后,客戶操作系統(tǒng)及應(yīng)用程序在全虛擬化的環(huán)境下,與正 常的操作系統(tǒng)的尋址過程一致,此時的客戶操作系統(tǒng)尋址首先由客戶線性地址,通過查找客 戶頁表找到相應(yīng)的客戶物理地址,之后由Xen繼續(xù)尋址過程,Xen會査詢EPT表找到之前客 戶物理地址對應(yīng)的機器地址
a) 若對應(yīng)EPT映射存在且是以本節(jié)點為home節(jié)點的共享頁面則有效,然后轉(zhuǎn)向步驟三;
b) 若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為讀操作則有效,然 后轉(zhuǎn)向步驟三;
c) 若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為寫操作,或者對應(yīng) EPT映射不存在則無效,然后轉(zhuǎn)向步驟四;
步驟三、NUMA處理本地請求過程
1. 獲得請求客戶物理頁面與所需權(quán)限;
2. 若為讀操作則直接從home中或是本地cache中獲得相應(yīng)EPT表對應(yīng)的機器頁面;
3. 若為寫操作則由home節(jié)點根據(jù)home中NUMA元數(shù)據(jù)保存的該頁面的使用節(jié)點副本,向 其他節(jié)點發(fā)送頁面無效通知,之后對頁面進行寫操作。
4. 完成本地處理過程。
步驟四、NUMA處理遠程請求的過程
1. 獲取請求頁面號以及權(quán)限;
2. 若對應(yīng)EPT映射不存在且為讀操作,則需向home節(jié)點發(fā)送請求,由home節(jié)點將頁面和權(quán)限發(fā)送到請求節(jié)點,請求節(jié)點緩存在本地cache后,繼續(xù)讀操作。
3. 若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為寫操作,或者對應(yīng)EPT 映射不存在且為寫操作,則需向home節(jié)點發(fā)送請求,由home節(jié)點根據(jù)home中NUMA元 數(shù)據(jù)保存的該頁面的使用節(jié)點副本,向其他節(jié)點發(fā)送頁面無效通知,之后將請求的頁面 副本和權(quán)限發(fā)送給請求節(jié)點,請求節(jié)點將頁面緩存在cache中后,繼續(xù)訪存操作。
4. 完成遠程處理過程。
權(quán)利要求
1、一種基于分布式內(nèi)存虛擬化的NUMA結(jié)構(gòu)的實現(xiàn)方法,該實現(xiàn)方法步驟如下設(shè)虛擬機主存容量為M,步驟一、準備階段(1)各結(jié)點Xen分配EPT表所需空間,并將EPT對應(yīng)所有內(nèi)容清零;(2)各節(jié)點Xen分別分配M大小的內(nèi)存供虛擬機使用,并按照1∶1映射的方式初始化EPT表中客戶物理頁面到機器頁面的映射關(guān)系;(3)所有節(jié)點的Xen標記其EPT表中以本節(jié)點為home節(jié)點的共享頁面映射有效,標記其它所有共享頁面映射無效;(4)各個節(jié)點將對應(yīng)虛擬處理器的頁表基址寄存器指向EPT表基址;(5)當客戶操作系統(tǒng)開啟分頁時,Xen將對應(yīng)虛擬處理使用的頁表機制更換為對應(yīng)的客戶操作系統(tǒng)頁表GPT基址;步驟二、正常工作階段在客戶操作系統(tǒng)啟動并正常運行之后,客戶操作系統(tǒng)及應(yīng)用程序在全虛擬化的環(huán)境下,與正常的操作系統(tǒng)的尋址過程一致,此時的客戶操作系統(tǒng)尋址首先由客戶線性地址,通過查找客戶頁表找到相應(yīng)的客戶物理地址,之后由Xen繼續(xù)尋址過程,Xen會查詢EPT表找到之前客戶物理地址對應(yīng)的機器地址a)若對應(yīng)EPT映射存在且是以本節(jié)點為home節(jié)點的共享頁面則有效,然后轉(zhuǎn)向步驟三;b)若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為讀操作則有效,然后轉(zhuǎn)向步驟三;c)若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為寫操作,或者對應(yīng)EPT映射不存在則無效,然后轉(zhuǎn)向步驟四;步驟三、NUMA處理本地請求過程(1)獲得請求客戶物理頁面與所需權(quán)限;(2)若為讀操作則直接從home中或是本地cache中獲得相應(yīng)EPT表對應(yīng)的機器頁面;(3)若為寫操作則由home節(jié)點根據(jù)home中NUMA元數(shù)據(jù)保存的該頁面的使用節(jié)點副本,向其他節(jié)點發(fā)送頁面無效通知,之后對頁面進行寫操作;(4)完成本地處理過程;步驟四、NUMA處理遠程請求的過程(1)獲取請求頁面號以及權(quán)限;(2)若對應(yīng)EPT映射不存在且為讀操作,則需向home節(jié)點發(fā)送請求,由home節(jié)點將頁面和權(quán)限發(fā)送到請求節(jié)點,請求節(jié)點緩存在本地cache后,繼續(xù)讀操作;(3)若對應(yīng)EPT映射存在但不是以本節(jié)點為home節(jié)點的共享頁面且為寫操作,或者對應(yīng)EPT映射不存在且為寫操作,則需向home節(jié)點發(fā)送請求,由home節(jié)點根據(jù)home中NUMA元數(shù)據(jù)保存的該頁面的使用節(jié)點副本,向其他節(jié)點發(fā)送頁面無效通知,之后將請求的頁面副本和權(quán)限發(fā)送給請求節(jié)點,請求節(jié)點將頁面緩存在cache中后,繼續(xù)訪存操作;(4)完成遠程處理過程。
全文摘要
本發(fā)明是一種基于分布式硬件輔助內(nèi)存虛擬化的NUMA結(jié)構(gòu)的實現(xiàn)方法,該方法有四個步驟。步驟一、準備階段步驟二、正常工作階段步驟三、NUMA處理本地請求過程步驟四、NUMA處理遠程請求的過程本發(fā)明采用最新的硬件輔助內(nèi)存虛擬化技術(shù),以及分布式共享存儲算法,對多機內(nèi)存資源進行虛擬化和整合,為上層客戶操作系統(tǒng)提供一個NUMA結(jié)構(gòu)的共享的單一物理地址空間,實現(xiàn)客戶操作系統(tǒng)對多機內(nèi)存資源的透明化統(tǒng)一管理,降低了應(yīng)用程序編程的復雜性,提高了系統(tǒng)資源的利用性。本發(fā)明具有良好的使用和發(fā)展前景。
文檔編號G06F12/08GK101477496SQ20081024666
公開日2009年7月8日 申請日期2008年12月29日 優(yōu)先權(quán)日2008年12月29日
發(fā)明者姜兆龍, 彭近兵, 珊 曾, 祝明發(fā), 肖利民, 博 馬 申請人:北京航空航天大學