国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

申威架構(gòu)下的軟件平滑嵌套頁表

2022-04-06 06:58:46杜翰霖羅英偉汪小林王振林
計算機研究與發(fā)展 2022年4期
關(guān)鍵詞:頁表客戶機嵌套

沙 賽 杜翰霖 羅英偉 汪小林 王振林

1(北京大學(xué)計算機科學(xué)技術(shù)系 北京 100871)

2(鵬城實驗室 廣東深圳 518000)

3(密歇根理工大學(xué) 美國密歇根州霍頓市 49931)

(ss_boom@pku.edu.cn)

申威處理器采用自主指令集,是我國具有完全自主知識產(chǎn)權(quán)的處理器系列[1].初代申威指令集是在Alpha指令集的基礎(chǔ)上進行擴展的,但經(jīng)過不斷發(fā)展與完善,現(xiàn)在已經(jīng)成為獨立的自主可控的指令集.申威處理器最為典型的應(yīng)用場景是我國自主研發(fā)的神威·太湖之光超級計算機.太湖之光超級計算機搭載了40 960個申威26010眾核處理器,其性能十分優(yōu)越,已蟬聯(lián)多次全球超算冠軍[2].申威架構(gòu)的應(yīng)用除眾核超級計算機之外,還有多核服務(wù)器,如申威1621服務(wù)器.本文的研究工作主要針對1621型服務(wù)器展開,探討申威處理器上高效的內(nèi)存虛擬化解決方案.該解決方案依托申威架構(gòu)特性,并適合在同一架構(gòu)下的多種型號的服務(wù)器上進行推廣.虛擬化技術(shù)是云服務(wù)產(chǎn)業(yè)的核心支持技術(shù)之一,可以有效提高物理資源的利用率和系統(tǒng)的安全性[3-4].申威架構(gòu)下的虛擬化解決方案并不完善,仍處于發(fā)展階段.經(jīng)過近年來的不斷發(fā)展,申威架構(gòu)已經(jīng)形成了基本的虛擬化框架.虛擬化技術(shù)分為3個主要方面:CPU虛擬化、內(nèi)存虛擬化和I/O虛擬化[3].申威在CPU虛擬化和I/O虛擬化已經(jīng)有了較為完善的解決方案.而內(nèi)存虛擬化方面,當(dāng)前申威虛擬機采用固定大小的預(yù)留段式內(nèi)存進行直接映射,虛擬機使用固定的物理內(nèi)存空間,虛擬機的數(shù)量及整個物理機內(nèi)存的使用極其受限,并不是真正意義上的內(nèi)存虛擬化[5].計算機系統(tǒng)中,CPU訪問內(nèi)存首先需要進行地址轉(zhuǎn)換,即虛擬地址轉(zhuǎn)換成物理地址.非虛擬化環(huán)境下只需要1維地址轉(zhuǎn)換.當(dāng)前申威虛擬機的內(nèi)存訪問和非虛擬化環(huán)境下相似,只是一種權(quán)宜的解決方案.

作為最為復(fù)雜的虛擬化技術(shù),內(nèi)存虛擬化需要完成2維(2D)地址轉(zhuǎn)換,即客戶機虛擬地址(guest virtual address, gVA)到客戶機物理地址(guest physical address, gPA)再到宿主機物理地址(host physical address, hPA)的轉(zhuǎn)換(gVA→gPA→hPA).現(xiàn)有的內(nèi)存虛擬化解決方案主要包括3類:影子頁表(shadow page table, sPT)模型、嵌套頁表(nested page table, NPT)模型以及直接頁表[3].前2種屬于完全內(nèi)存虛擬化,虛擬機操作系統(tǒng)無需做任何修改;第3種屬于半虛擬化,需要修改虛擬機操作系統(tǒng)的源代碼.

本文工作主要針對完全虛擬化解決方案.影子頁表模型屬于軟件內(nèi)存虛擬化,不需要硬件支持.該模型的主要思想是采用一個頁表(即影子頁表)來直接保存客戶機虛擬地址到宿主機物理地址(gVA→hPA)的映射.在虛擬機進行地址轉(zhuǎn)換過程中,內(nèi)存管理單元(memory manage unit, MMU)直接加載當(dāng)前進程的影子頁表,加速2級地址轉(zhuǎn)換.影子頁表依賴寫保護機制來同步客戶機頁表(guest page table, gPT)和影子頁表(sPT),這種模式造成了嚴(yán)重的虛擬機退出(VMExit)開銷.

嵌套頁表模型屬于硬件輔助內(nèi)存虛擬化,需要有專門的硬件支持,其代表有Intel拓展頁表(extended page table, EPT)和AMD嵌套頁表,兩者在原理和實現(xiàn)上基本一致[6].嵌套頁表保存了虛擬機物理地址到宿主機物理地址的映射關(guān)系.嵌套頁表模型的核心思想是MMU加載虛擬機進程頁表,在頁表查詢(page walk)的過程中,從進程頁表中獲取虛擬機物理地址,然后立即訪問嵌套頁表,轉(zhuǎn)換成宿主機物理地址,再進內(nèi)存訪問.嵌套頁表模型實現(xiàn)了地址轉(zhuǎn)換過程中的2維頁表代換,避免了影子頁表模型因同步產(chǎn)生的開銷.然而64位機器在不開啟大頁機制的情況下,都具有4級頁表結(jié)構(gòu).嵌套頁表模型會導(dǎo)致1次地址轉(zhuǎn)換中存在遠超非虛擬化環(huán)境下的多次內(nèi)存訪問.若無硬件輔助支持,嵌套頁表模型在1次2維頁表查詢過程中需要24次訪存[7-8].因此,處理器采用必要的硬件進行輔助加速.硬件主要包括頁表查詢緩存(page walk cache, PWC)和嵌套旁路轉(zhuǎn)換緩存(nested translation lookaside buffer, NTLB).PWC緩存了頁表項(包括頁表物理頁幀號和頁內(nèi)偏移)為索引、次級頁表頁物理頁幀號為值的映射.PWC可以減少頁表查詢產(chǎn)生的訪存次數(shù)[9].NTLB通過緩存gPA到hPA的映射來優(yōu)化4級嵌套頁表的查詢[6].雖然NTLB可以有效減少嵌套頁表查詢的訪存次數(shù),但是NTLB的大小十分有限,尤其是對于訪存局部性較差的程序,系統(tǒng)就會產(chǎn)生較多的NTLB miss,2維4級頁表的嵌套查詢?nèi)詴斐娠@著的性能開銷.

目前申威架構(gòu)缺乏嵌套頁表所需的硬件輔助,因此,難以實現(xiàn)傳統(tǒng)意義上的嵌套頁表模型.幸運的是,申威架構(gòu)具有獨特的特權(quán)程序可編程接口(hardware mode code, HMcode),提供了底層軟件靈活性[10].在HMcode中,系統(tǒng)開發(fā)者可以通過軟件實現(xiàn)豐富的類硬件支持,特別是虛擬化支持,如虛擬中斷、虛擬機退出/陷入(VMExit/VMEntry)等.基于申威架構(gòu)這一特性,本文實現(xiàn)了申威架構(gòu)下的平滑嵌套頁表模型(swFNPT).該模型通過純軟件的優(yōu)化,彌補了申威架構(gòu)硬件不足的缺點,實現(xiàn)了申威處理器上真正意義的內(nèi)存虛擬化.

1 相關(guān)工作

申威處理器現(xiàn)有的內(nèi)存虛擬化方案采用了預(yù)留內(nèi)存的直接映射模型實現(xiàn)虛擬機的內(nèi)存訪問.該模型要求宿主機將物理內(nèi)存進行預(yù)留,僅虛擬機可使用這部分內(nèi)存.因為直接使用“基址+偏移”的方式進行1維地址轉(zhuǎn)換,這種設(shè)計不存在額外的內(nèi)存虛擬化開銷.然而,這種實現(xiàn)既不符合內(nèi)存虛擬化的理念,在資源使用上也存在著資源利用率低、靈活性差等問題.

Gandhi等人[7]也提出通過直接映射模型加速虛擬化環(huán)境下的地址轉(zhuǎn)換,從而減少頁表訪問帶來的開銷.他們先是在非虛擬化環(huán)境下,針對大工作集程序?qū)崿F(xiàn)了一種段式內(nèi)存映射,然后將這種方案拓展到內(nèi)存虛擬化當(dāng)中.他們?yōu)?個虛擬機申請充足的連續(xù)物理內(nèi)存,該虛擬機的地址轉(zhuǎn)換就變成了簡單的段基址加偏移,這樣直接避免了4級頁表的訪問,提高了轉(zhuǎn)換效率.但是,這種直接映射要求虛擬機的物理內(nèi)存是連續(xù)的,這可能導(dǎo)致一些內(nèi)存資源的損失,降低了內(nèi)存利用率;另一方面,這種設(shè)計直接喪失內(nèi)存虛擬化帶來的靈活性,不能夠根據(jù)應(yīng)用的需要調(diào)節(jié)虛擬機的內(nèi)存,也難以細粒度地進行內(nèi)存管理.這種設(shè)計也難以和現(xiàn)有的一些虛擬機功能有效兼容,比如虛擬機熱遷移.

Ahn等人[11]提出將4級嵌套頁表改為1級嵌套頁表,即平滑嵌套頁表(flat nested page table).該設(shè)計將2維嵌套頁表查詢最壞情況下需要24次訪存縮減到最多9次訪存.該設(shè)計保留硬件輔助虛擬化支持,是通過全功能模擬器進行評估,由于進行了必要的硬件改造,無法在真機上實現(xiàn).HMcode恰好為申威處理器實現(xiàn)這一設(shè)計提供了條件.本文吸收了該工作的思想,在申威架構(gòu)下實現(xiàn)了平滑嵌套頁表來緩解頁表查詢壓力.

采用大頁機制可以有效緩解嵌套頁表查詢壓力.因為使用大頁可以將4級頁表縮短為3級甚至2級頁表,加快了頁表查詢的速度.同時每個映射都具有更大的映射空間,TLB miss率也會顯著下降.然而,大頁機制存在著碎片化嚴(yán)重、資源浪費、靈活性差、不支持虛擬機熱遷移等諸多問題.針對這些問題,研究者們提出了一系列的解決方案來緩解大頁機制帶來的弊端.Guo等人[12]在VMware上提出了主動積極拆分大頁的技術(shù)方案來緩解大頁導(dǎo)致的內(nèi)存資源浪費問題;針對大頁機制不適應(yīng)于NUMA架構(gòu)的問題,Gaud等人[13]提出了改良版的Carrefour算法來保障大頁機制在NUMA架構(gòu)上的性能;Pham等人[14]則提出了一種推測式大頁機制來進行大頁的輕量級管理.

研究者們在內(nèi)存虛擬化領(lǐng)域進行諸多嘗試與探索,取得了一系列豐富成果.然而一方面,一些方法需要依賴一定的硬件改造;另一方面,由于申威架構(gòu)的特殊性,針對申威架構(gòu)的內(nèi)存虛擬化工作還存在很大的空白.本文借鑒吸收國內(nèi)外先進的研究經(jīng)驗,提出了首個申威架構(gòu)下的純軟件的嵌套頁表內(nèi)存虛擬化解決方案.

2 申威虛擬化框架

本節(jié)主要介紹申威架構(gòu)虛擬化框架的相關(guān)實現(xiàn),主要包括申威架構(gòu)CPU特權(quán)級模型、虛擬化模型支持以及申威HMcode.

2.1 申威CPU模式

如圖1所示,申威CPU具有4個特權(quán)模式,由高到低分別是硬件模式(L-0)、虛擬模式、核心模式(L-1)以及用戶模式(L-2).特有的HMcode運行在最高權(quán)限的硬件模式.該接口主要用于代替部分硬件功能,這些功能用硬件實現(xiàn)過于復(fù)雜,而又無法用常規(guī)程序?qū)崿F(xiàn),例如頁表代換、進程上下文切換、TLB刷新等;也用于實現(xiàn)一些原子操作和一些兼容不同平臺的代碼.虛擬模式暫未啟用;核心模式類似于X86架構(gòu)的內(nèi)核模式,操作系統(tǒng)運行在該模式下;用戶模式具有最低的特權(quán)級,用戶程序在該模式下執(zhí)行.其他非硬件模式都可以通過受限的系統(tǒng)調(diào)用(syscall)調(diào)用硬件模式下的特權(quán)指令實現(xiàn)一些底層支持.

Fig. 1 The privilege modes of Sunway CPU圖1 申威CPU特權(quán)模式

2.2 申威虛擬化模式

如圖2所示,申威CPU具有和Intel X86 VT-X根/非根模式(root/non-root mode)類似的虛擬化模式.宿主機和客戶機分別在根/非根模式下運行,但兩者都具有核心模式和用戶模式.宿主機操作系統(tǒng)及虛擬機管理器(virtual machine monitor, VMM,也稱hypervisor)運行在根模式下的內(nèi)核模式特權(quán)級.VMEntry實現(xiàn)根模式到非根模式的切換,VMExit實現(xiàn)非根模式到根模式的切換.例如,虛擬機觸發(fā)時鐘中斷處理時,虛擬機觸發(fā)1次VMExit.首先,系統(tǒng)保存客戶機上下文信息,其中包括主要的CPU寄存器狀態(tài)、棧指針、欲執(zhí)行的指令地址(PC)等.然后系統(tǒng)恢復(fù)宿主機上下文信息,陷入VMM進行時鐘同步處理;處理結(jié)束后,CPU觸發(fā)VMEntry,恢復(fù)虛擬機上下文信息,進入虛擬機,繼續(xù)執(zhí)行指令.和X86不同的是,申威架構(gòu)具有最高權(quán)限的硬件模式,該模式不受根/非根虛擬化模式的限制,任何模式都可以通過受限的系統(tǒng)調(diào)用陷入硬件模式.

Fig. 2 The virtualization mode of Sunway CPU圖2 申威CPU虛擬化模式

2.3 申威特權(quán)程序可編程接口(HMcode)

HMcode運行在最高特權(quán)的硬件模式(如圖1、圖2所示),該接口處于內(nèi)核和硬件之間,屬于固件.代碼保存在flash部件中,形式上類似于RAM BIOS.特權(quán)程序可以以物理地址直接訪問全局地址空間,也可以直接訪問寄存器.特別地,申威架構(gòu)是軟件管理的TLB,這為實現(xiàn)內(nèi)存虛擬化提供了必要支持.TLB miss之后,特權(quán)入口TLB_MISS_ENTRY接管TLB miss處理,進行頁表查詢和TLB填充.我們在TLB_MISS_ENTRY中實現(xiàn)嵌套頁表的相關(guān)邏輯,具體實現(xiàn)在第3節(jié)進行詳細闡述.HMcode為上層應(yīng)用提供豐富的系統(tǒng)調(diào)用接口,但不同CPU模式具有不同的調(diào)用權(quán)限,例如內(nèi)核進程可使用如進程上下文切換、讀寄存器、TLB刷新等功能的系統(tǒng)調(diào)用;而用戶進程無法使用此類內(nèi)核級調(diào)用.

3 申威架構(gòu)下的軟件平滑嵌套頁表

3.1 傳統(tǒng)內(nèi)存虛擬化模型

現(xiàn)有的完全內(nèi)存虛擬化模型包括影子頁表模型和嵌套頁表模型.圖3展示了2種模型的工作原理.

Fig. 3 The principles of shadow page table model and nested page table model圖3 影子頁表模型和嵌套頁表模型原理

圖3(a)是影子頁表模型的工作原理.VMM為每個虛擬機進程建立一套影子頁表,用于保存客戶機虛擬地址到宿主機物理地址之間的映射.在地址轉(zhuǎn)換過程中,一旦發(fā)生TLB缺失,CPU觸發(fā)頁表查詢過程.實際加載到頁表基地址寄存器CR3中的是影子頁表基地址,所以MMU對影子頁表進行頁表查詢.影子頁表模型的優(yōu)點是通過1維頁表緩存2維地址轉(zhuǎn)換,提高了地址轉(zhuǎn)換的效率.然而,VMM需要維護影子頁表的正確性,一旦客戶機操作系統(tǒng)修改了客戶機進程頁表,影子頁表也需要進行相應(yīng)的修正.這就是影子頁表模型最大的開銷所在,即如何同步客戶機進程頁表和影子頁表.客戶機修改進程頁表不是系統(tǒng)級事件,VMM無法感知這一操作.傳統(tǒng)的方式是寫保護機制,VMM對所有的客戶機進程頁表頁施加寫保護,一旦進程頁表頁被修改,就會觸發(fā)寫保護錯誤,進而觸發(fā)VMExit而陷入VMM.所以,影子頁表模型的缺點就是不適應(yīng)于高頻頁表修改的應(yīng)用程序(如gcc).過度的頁表修改會導(dǎo)致大量的VMExit,每一次VMExit/VMEntry都需要TLB清空、上下文切換等操作,開銷十分顯著.

圖3(b)是嵌套頁表模型的工作原理.嵌套頁表模型的基本思想是通過嵌套頁表保存gPA到hPA的映射,虛擬機在進程頁表查詢時獲取gPA,然后訪問嵌套頁表進行第2維的地址轉(zhuǎn)換(gPA→hPA).相較于影子頁表模型,嵌套頁表模型消除了因為影子頁表同步造成的虛擬化開銷,并且有效降低了內(nèi)存虛擬化的復(fù)雜程度.然而,嵌套頁表模型會導(dǎo)致更多的頁表查詢開銷.64位系統(tǒng)具有4級頁表,每一級進程頁表查詢都需要進行1次嵌套頁表的查詢,每一級嵌套頁表的查詢都需要1次訪存操作.頁表基地址寄存器(CR3)、4級進程頁表及數(shù)據(jù)頁地址各1次轉(zhuǎn)換,因此在無硬件輔助支持的條件下共需24次訪存[15].為了緩解這一開銷,研究者們提出了NTLB的硬件部件,用于直接保存第2維的地址映射,其基本功能等同于CPU TLB.因為是硬件部件,因此具有極高的查詢效率(數(shù)個CPU周期).NTLB可以顯著提高嵌套頁表的查詢效率.

但是,目前的申威芯片仍處于不斷發(fā)展與完善階段,很多相關(guān)的硬件支持(比如DMA等)均未實現(xiàn),嵌套頁表所需的相關(guān)硬件同樣也未提供.硬件支持的缺乏意味著如果在申威處理器上實現(xiàn)嵌套頁表模型,每次地址轉(zhuǎn)換都需要24次訪存,相較于非虛擬化環(huán)境的4次訪存,顯然這一開銷是難以接受的.因此,我們改進了傳統(tǒng)的嵌套頁表模型,基于申威架構(gòu)的HMcode,在申威處理器上實現(xiàn)了首個平滑嵌套頁表的內(nèi)存虛擬化解決方案.一方面為申威虛擬機實現(xiàn)真正意義的內(nèi)存虛擬化,另一方面我們也希望通過這一方案為新一代申威處理器的硬件輔助虛擬化設(shè)計提供相應(yīng)的理論和實驗支持.

3.2 平滑嵌套頁表

申威架構(gòu)缺少硬件上的內(nèi)存虛擬化支持,因此在地址轉(zhuǎn)換開銷上難以接受.為了解決這一問題,我們采用平滑(1級)嵌套頁表機制來緩解開銷.圖4展示了平滑嵌套頁表基本原理.平滑嵌套頁表由一段連續(xù)的物理內(nèi)存存儲,任何對于該頁表的查詢都只需要根據(jù)“基地址+偏移”的模式進行訪問.平滑嵌套頁表以客戶機物理頁幀號(guest-physical frame number, GFN)為索引,其中每個條目保存著對應(yīng)的宿主機物理頁幀號(physical frame number, PFN).宿主機物理頁幀號和客戶機物理地址的頁內(nèi)偏移組成宿主機物理地址.相較于4級嵌套頁表,訪問1次平滑嵌套頁表僅需要1次訪存,整個2維嵌套頁表查詢最多需要9次訪存.然而平滑嵌套頁表的設(shè)計需要重構(gòu)查詢嵌套頁表的MMU,這在X86服務(wù)器上無法實現(xiàn).而申威架構(gòu)HMcode提供了底層支持的軟件可編程性,我們可以在HMcode中軟件編程實現(xiàn)嵌套頁表所需的一些底層支持.

Fig. 4 The principle of flat nested page table圖4 平滑嵌套頁表原理

3.3 基于申威架構(gòu)的平滑嵌套頁表設(shè)計

平滑嵌套頁表模型主要分為3部分:頁表初始化、頁表查詢和頁表缺頁處理.當(dāng)前的申威服務(wù)器以QEMU/KVM為基本虛擬化框架,底層的頁表查詢模塊實現(xiàn)在HMcode中.平滑嵌套頁表將依托于申威架構(gòu)特性來設(shè)計,圖5展示了申威架構(gòu)下平滑嵌套頁表的基本框架.

Fig. 5 The framework of flat nested page table under Sunway architecture圖5 申威架構(gòu)平滑嵌套頁表框架

1) 平滑嵌套頁表的初始化.VMM需要根據(jù)虛擬機的物理內(nèi)存大小來申請相應(yīng)的連續(xù)內(nèi)存保存平滑嵌套頁表.

2) 平滑嵌套頁表的查詢.查詢平滑嵌套頁表的MMU(FNPT MMU)應(yīng)實現(xiàn)于HMcode.目前申威的MMU是以軟件形式實現(xiàn)在HMcode中.Software MMU在訪問每一級客戶機進程頁表時需要通過FNPT MMU訪問平滑嵌套頁表將gPA轉(zhuǎn)換成hPA.

3) 平滑嵌套頁表缺頁處理.FNPT MMU查詢頁表時可能觸發(fā)缺頁中斷,通過VMExit接口進入VMM中進行缺頁處理.缺頁處理結(jié)束之后,通過VMEntry接口重新進入客戶機完成地址轉(zhuǎn)換.

3.4 平滑嵌套頁表在申威下的軟件實現(xiàn)

我們在申威1621服務(wù)器上實現(xiàn)了平滑嵌套頁表模型.在虛擬機運行過程中,CPU根據(jù)客戶機虛擬地址查詢TLB進行地址轉(zhuǎn)換.系統(tǒng)發(fā)生TLB缺失,立刻陷入TLB缺失處理入口進行TLB缺失處理.MMU加載客戶機進程頁表開始進行2維頁表查詢,客戶機進程頁表保存了gVA到gPA的映射關(guān)系,每一級頁表的頁表項都保存了1個客戶機物理頁幀號和對應(yīng)的權(quán)限位信息.首先,MMU訪問FNPT MMU嘗試將進程頁表基地址(gPA)轉(zhuǎn)換成hPA;然后,4級進程頁表的每一輪查詢都需要訪問FNPT MMU將gPA轉(zhuǎn)化成hPA;最后,MMU將gVA到hPA的映射使用軟件填充TLB.至此,1次虛擬化環(huán)境下的地址轉(zhuǎn)換完成.

在嵌套頁表模型中,系統(tǒng)可能發(fā)生2種缺頁中斷:1)客戶機進程頁表不完整導(dǎo)致的缺頁中斷;2)嵌套頁表不完整導(dǎo)致的嵌套頁表缺頁中斷.當(dāng)MMU查詢客戶機進程頁表時,會檢查頁表項的權(quán)限位,若有效位為0,則觸發(fā)1次客戶機缺頁異常處理,系統(tǒng)進入虛擬機內(nèi)核缺頁處理程序進行缺頁處理,填充進程頁表.缺頁中斷處理結(jié)束后,系統(tǒng)再次執(zhí)行產(chǎn)生TLB miss重新開始地址轉(zhuǎn)換.當(dāng)FNPT MMU查詢平滑嵌套頁表時,有可能發(fā)生缺頁中斷,此時觸發(fā)1次嵌套頁表缺頁處理.

系統(tǒng)通過VMExit接口進行上下文切換,CPU進入VMM進行嵌套頁表缺頁處理.首先根據(jù)傳入的GFN調(diào)用_gfn_to_pfn_memslot()接口將GFN轉(zhuǎn)化成對應(yīng)的PFN.該接口首先將虛擬機物理頁幀號轉(zhuǎn)化成宿主機虛擬頁號,因為虛擬機物理地址空間和虛擬機管理進程(QEMU進程)的虛擬地址空間都是連續(xù)的,因此兩者之間通過“基地址+偏移”的方式直接轉(zhuǎn)換;其次,該接口查詢宿主機進程頁表,將虛地址轉(zhuǎn)化成物理地址;最后VMM以GFN為索引,將對應(yīng)的PFN插入嵌套頁表.至此,1次嵌套頁表的缺頁處理完成,VMM調(diào)用VMEntry接口切換上下文,重新陷入虛擬機,CPU再次執(zhí)行產(chǎn)生TLB缺失的指令,重新進行地址轉(zhuǎn)換.

4 實驗與分析

4.1 實驗環(huán)境

我們在真機環(huán)境下評估了申威架構(gòu)下的平滑嵌套頁表模型.實驗組物理機是申威1621服務(wù)器,該服務(wù)器具有16個物理核心,主頻約為1.6 GHz,搭載深度操作系統(tǒng)15.02.對照組物理機是基于X86架構(gòu)的Intel服務(wù)器,主頻約為2.1 GHz,搭載的是Ubuntu 16.04服務(wù)器版操作系統(tǒng).具體參數(shù)如表1所示.

Table 1 Experimental Machine Configuration表1 實驗機參數(shù)配置

4.2 實驗設(shè)計

因為現(xiàn)有的申威服務(wù)器不具有真正意義的內(nèi)存虛擬化功能,所以對照組機器選擇相同軟件配置的Intel X86服務(wù)器.在X86架構(gòu)下,我們對影子頁表模型(X86-SP)和拓展頁表模型(X86-EPT)分別進行了測試.

嵌套頁表模型需要預(yù)熱處理(warm-up).在每輪測試程序運行前,需要首先運行一個較大工作集程序進行預(yù)熱處理,保證嵌套頁表完成缺頁處理.若在虛擬機啟動初期直接運行測試程序,系統(tǒng)會產(chǎn)生大量的嵌套頁表缺頁處理中斷,降低程序性能.這種處理是考慮到云服務(wù)器的應(yīng)用都具有較長工作周期,嵌套頁表的缺頁處理一般只發(fā)生在虛擬機啟動前期,預(yù)熱操作之后的實驗結(jié)果更能體現(xiàn)虛擬機在一個長周期內(nèi)的真實性能.

我們選擇了SPEC CPU 2006,SPEC CPU 2017,Graph500,Memcached等應(yīng)用作為測評程序.SPEC CPU 2006采用ref集進行測試.SPEC CPU 2006測試程序工作集普遍較小(均低于3 GB),為進一步驗證模型的效果,我們從SPEC CPU 2017測試集中挑選了8個具有較大工作集的測試程序.表2展示了這8組程序的工作集信息.我們也選用了較為典型的云服務(wù)程序Memcached和Graph500測試swFNPT模型的性能.最后我們使用STREAM評估虛擬機系統(tǒng)內(nèi)存帶寬損失.

Table 2 Benchmarks of SPEC CPU 2017表2 SPEC CPU 2017測試程序 GB

4.3 實驗結(jié)果及分析

4.3.1 內(nèi)存虛擬化整體性能測試

SPEC CPU 2006測試集具有多個測試子程序,不同程序具有不同的訪存特征,能夠較為全面地反映系統(tǒng)訪存性能.表3展示的是swFNPT,Intel X86-EPT,Intel X86-SP這3組模型使用SPEC CPU 2006測試集的實驗結(jié)果.實驗結(jié)果表明,適配swFNPT模型的申威虛擬機整體性能良好,SPEC CPU 2006全集平均性能開銷僅為3.24%.申威服務(wù)器內(nèi)存虛擬化與Intel X86下2組模型的平均性能開銷基本相當(dāng).

如第3節(jié)所述,相較于傳統(tǒng)的影子頁表模型,嵌套頁表的主要優(yōu)點是消除了頁表同步的開銷.這一優(yōu)點展現(xiàn)在具有頻繁修改頁表特性的測試程序(如403.gcc)上.如表3所示,基于嵌套頁表的X86-EPT和swFNPT在403.gcc程序的開銷均低于基于影子頁表的X86-SP.

在SPEC CPU 2006的實驗結(jié)果中429.mcf具有超過20%的性能開銷.且X86架構(gòu)下的Intel X86-EPT同樣具有高達8.39%的虛擬化開銷,但Intel X86-SP的開銷低于5%,這是由該程序的訪存特性所決定的.429.mcf是典型的局部性較差的程序,這導(dǎo)致該類程序的TLB缺失率高,MMU壓力更大.在地址轉(zhuǎn)換過程中,該類程序需要頻繁進行頁表查詢操作.64位操作系統(tǒng)采用4級頁表,基于影子頁表模型的地址轉(zhuǎn)換最多產(chǎn)生5次存儲訪問,考慮到PWC硬件支持,這一開銷會更小[9].相反地,采用嵌套頁表模型,無論是Intel EPT還是swFNPT都需要2維頁表查詢,這大大加劇了頁表查詢的開銷.這一特性在之前的研究工作中也有明確體現(xiàn).Pham等人[14]指出使用嵌套頁表模型的虛擬化系統(tǒng)中運行429.mcf,地址轉(zhuǎn)換在整個程序運行周期中占比高達40%.我們在Intel X86機器上通過硬件計數(shù)器統(tǒng)計地址轉(zhuǎn)換開銷并建模實驗獲得了近似的實驗結(jié)果.此外,在非虛擬化環(huán)境下429.mcf仍有22%的執(zhí)行時間用于地址轉(zhuǎn)換.汪小林等人[16]的工作也明確指出429.mcf在使用嵌套頁表模型時具有明顯的內(nèi)存虛擬化開銷.

Table 3 Experimental Results of SPEC CPU 2006表3 SPEC CPU 2006測試結(jié)果 %

429.mcf實驗結(jié)果表明,Intel X86-EPT比申威swFNPT內(nèi)存虛擬化開銷更小.這一差距主要原因分為2個方面:1)硬件支持(PWC,NTLB)和TLB;2)Cache容量.PWC和NTLB可以有效減少2維頁表查詢中的訪存次數(shù),申威服務(wù)器暫未實現(xiàn)這2個功能部件.盡管swFNPT將每次頁表查詢中的訪存次數(shù)控制在9次,但是相較于具有硬件輔助的內(nèi)存虛擬化實現(xiàn),swFNPT平均的訪存次數(shù)仍然較高.由表1可知,Intel服務(wù)器的1級TLB容量為申威服務(wù)器的2倍,2級TLB容量為申威服務(wù)器的3倍.Intel服務(wù)器的2級Cache容量為申威服務(wù)器的2倍,且Intel服務(wù)器具有第3級Cache.更大的TLB容量將大大降低程序的TLB缺失率,緩解MMU壓力.更大的2級Cache容量將有助于提升地址轉(zhuǎn)換中訪存效率.

4.3.2 大工作集程序虛擬化性能測試

為進一步驗證平滑嵌套頁表模型的性能,我們在申威服務(wù)器上運行測試SPEC CPU 2017中8個內(nèi)存用量較大的程序.實驗結(jié)果如表4所示,平滑嵌套頁表模型的平均開銷僅為4.12%,最大開銷不超過9.2%.這一實驗結(jié)果說明該模型在較大內(nèi)存壓力的情況下仍有較好的性能.特別地,結(jié)合4.3.1節(jié)SPEC CPU 2006的實驗結(jié)果,我們發(fā)現(xiàn)605.mcf程序虛擬化開銷明顯低于429.mcf程序的開銷.這是因為后者局部性更差,這一特性也有相關(guān)研究給出[17].

Table 4 Experimental Results of SPEC CPU 2017表4 SPEC CPU 2017測試結(jié)果

4.3.3 典型云服務(wù)應(yīng)用內(nèi)存虛擬化性能測試

表5展示了Memcached和Graph500的2組典型云服務(wù)應(yīng)用的實驗結(jié)果.Memcached使用memcslap腳本進行測試,其中并發(fā)參數(shù)為100;Graph500使用OpenMPI框架運行節(jié)點數(shù)為220.結(jié)果表明Memcached測試中,swFNPT和X86-EPT虛擬化開銷均低于X86-SP.這是因為Memcached程序具有較為頻繁的進程切換,而影子頁表模型在進程切換時都需要產(chǎn)生VMExit進行頁目錄表寄存器的更新,開銷較大.Graph500是較為典型的大規(guī)模并行程序,我們使用OpenMPI框架運行.該程序在Intel X86-EPT模型上的開銷約為5%,在Intel X86-SP模型上開銷約為6%,在swFNPT模型上開銷低于8%.

Table 5 Experimental Results of Memcached and Graph500表5 Memcached和Graph500測試結(jié)果 %

4.3.4 虛擬機內(nèi)存帶寬

STREAM是廣泛使用的用于測試系統(tǒng)內(nèi)存帶寬的工具.我們使用STREAM 2.0測試了虛擬化系統(tǒng)中的內(nèi)存帶寬.試驗結(jié)果表明,相較于非虛擬化環(huán)境,swFNPT產(chǎn)生的內(nèi)存帶寬損失低于3%.我們在相同的軟件環(huán)境下分別進行了Intel X86-EPT和X86-SP的實驗,帶寬損失分別為2.88%和3.27%.

4.3.5 實驗總結(jié)

4.3.1~4.3.4節(jié)的實驗結(jié)果表明:swFNPT在大多數(shù)應(yīng)用程序上表現(xiàn)良好,諸如400.perlbench等18個程序虛擬化開銷均低于3%.特別地,401.bzip2,435.gromacs,603.bwaves等程序的虛擬化開銷低于1%.SPEC CPU 2017的實驗表明swFNPT模型在較大內(nèi)存壓力下也能表現(xiàn)出良好的性能.在內(nèi)存帶寬方面,STREAM測試結(jié)果表明swFNPT內(nèi)存虛擬化造成的帶寬損失不高于3%;Memcached和Graph500的實驗結(jié)果表明,swFNPT在支持進程頻繁切換和大規(guī)模并行方面表現(xiàn)良好.但是申威swFNPT在執(zhí)行局部性較差的程序(如429.mcf)時虛擬化開銷較大,這主要受限于申威服務(wù)器硬件支持上的不足,這一實驗結(jié)果為申威服務(wù)器下一步的發(fā)展提供切實有效的實驗支持.

5 總結(jié)與展望

本文在國產(chǎn)申威架構(gòu)上設(shè)計實現(xiàn)了首個軟件平滑嵌套頁表模型swFNPT,在申威1621服務(wù)器上的實驗結(jié)果表明,swFNPT整體性能良好.這一工作為國產(chǎn)申威架構(gòu)的硬件輔助虛擬化下一步發(fā)展提供有價值的參考.一方面,申威架構(gòu)處理器要不斷完善MMU,NTLB,PWC等的硬件支持;另一方面,申威處理器要保留特權(quán)程序可編程接口以提供底層軟件靈活性.結(jié)合NTLB等硬件支持,未來軟硬件結(jié)合的swFNPT將更能充分發(fā)揮申威架構(gòu)的獨特優(yōu)勢.

作者貢獻聲明:沙賽進行了該論文相關(guān)的系統(tǒng)設(shè)計、代碼編寫、論文撰寫等工作;杜翰霖進行了系統(tǒng)測試;羅英偉進行了論文結(jié)構(gòu)設(shè)計和論文修改;汪小林制定了論文相關(guān)的實驗方案;王振林參與進行了系統(tǒng)設(shè)計和論文修改.

猜你喜歡
頁表客戶機嵌套
Reducing the global cancer burden with gastrointestinal screening: China’s 30 years practice
例析“立幾”與“解幾”的嵌套問題
作者更正
基于嵌套Logit模型的競爭性選址問題研究
更正
勘 誤
更正
一種基于區(qū)分服務(wù)的嵌套隊列調(diào)度算法
計算機工程(2014年6期)2014-02-28 01:25:29
無背景實驗到有背景實驗的多重嵌套在電氣專業(yè)應(yīng)用研究
河南科技(2014年23期)2014-02-27 14:19:17
瘦客戶機:安全與便捷的選擇
富阳市| 平利县| 垦利县| 乌海市| 治县。| 高雄市| 襄垣县| 天长市| 鄂托克旗| 凯里市| 东丰县| 广元市| 游戏| 屏南县| 潮州市| 淮北市| 灵宝市| 贵德县| 深州市| 万盛区| 黄龙县| 育儿| 平罗县| 成安县| 深州市| 广河县| 阿拉尔市| 探索| 冕宁县| 昭觉县| 天柱县| 丹阳市| 安多县| 固始县| 麦盖提县| 理塘县| 凌海市| 兴业县| 德令哈市| 颍上县| 嘉善县|