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