虛擬存儲技術 虛擬存儲( 二 )


優點:地址轉換關系建立成本低,獨立的EPT頁表的存在保證了地址轉換的合法性,虛擬機的頁表可以自行修改,無需VMM干預 。
缺點:轉換過程的成本非常高 。最壞的情況下,需要24(4+4+4 * 4)次硬件查找轉換 。
這兩個經典方案在安全性上有堅實的保證,但在性能上各有缺陷 。SPT在建立轉換關系上付出了很大的代價來保證地址轉換的合法性,而EPT消除了建立轉換關系的開銷,但是轉換路徑更長 。
其他探索
關于內存虛擬化,工業界和學術界還有很多探索 ?;舅悸奉愃朴赟PT或EPT,可分為三類:
1)一層頁表方案 。類似于SPT,使用一層頁表來直接管理從GVA到HPA的映射 。
2)雙層頁表方案 。與EPT類似,使用兩個獨立的頁表來分別管理從GVA到GPA和GPA到HPA的映射 。
3)混合方案 。結合前兩種方案進行動態選擇 。
直接分頁:一層頁表方案,這是早期硬件只支持一層頁表時Xen的一種半虛擬化方案 。與SPT相比,最大的區別是GVA到GPA的虛擬機頁表沒有單獨維護,虛擬機知道自己是在虛擬化的環境中,也就是知道自己的頁表內容是HPA 。虛擬機頁表修改也需要陷阱,但是主動陷阱可以是批處理,而SPT是被動攔截陷阱 。讀取頁表時只能得到HPA,需要查一個M2P(機器到物理)表才能得到GPA 。
直接分頁也是用一層頁表來管理GVA到HPA的映射,地址翻譯的路徑和SPT一樣 。使用4級頁表時,最差只需要查表4次 。
優點:地址翻譯過程成本低,與物理機相當 。
缺點:
1)地址轉換關系的建立非常昂貴,所有頁表修改都需要主動陷;
2)虛擬機需要做半虛擬適配,虛擬機需要感知到自己的頁表管理著從GVA到HPA的映射 。
直接段:兩層頁表方案,這是學術界基于新硬件的方案 。GVA到GPA的映射管理和EPT一樣,也是采用多級頁表 。而GPA到HPA的映射采用分段機制,GPA轉換成HPA時只需要硬件加一個偏移量 。
雖然GPA不等于HPA,但是兩者之間的映射關系非常簡單 。只有直接段硬件需要添加偏移量 。和物理機的路徑相比,整個轉換路徑差別不大,只是多了幾個硬件偏移量 。使用虛擬機四級頁表時,轉換路徑如下圖所示,其中DS表示GPA到HPA轉換的硬件支持 。
優點:地址翻譯關系建立成本低,翻譯過程成本也很低 。
缺點:
1)需要硬件支持GPA到HPA段的映射,現有硬件不具備此功能;
2)需要分配一大段連續內存,即主機不能有太多內存碎片 。
Flat EPT:兩層頁表方案,也是學術界提出的基于新硬件的方案 。它與整個EPT非常相似 。唯一不同的是EPT管理從GPA到HPA的多級頁表的使用,一般是4級,每級512個條目 。而Flat EPT使用只有一個級別的平面頁表,有超過512個條目 。
和EPT一樣,各級虛擬機中頁表的內容都是GPA 。當查詢下一級時,需要通過平面擴展頁表(nL4)將頁表轉換為HPA 。因為平面擴展頁表只有一級,所以轉換路徑比EPT短得多 。在虛擬機中使用4級頁表時,轉換路徑如下圖所示 。最壞的情況下,只需要9(4+1+4 * 1)次查表 。
優點:地址翻譯關系建立成本低,翻譯過程成本也低 。與直接段相比,需要的內存分配更少,只需要少量的連續內存作為平面擴展頁表(8G虛擬機只需要16M) 。
缺點:需要硬件來支持平面擴展頁表 。當前硬件僅支持具有條目512的多級擴展頁表 。
混合SPT和EPT:混合方案,學術界較早提出的,簡單來說就是SPT和EPT的動態分時切換 。監控并收集虛擬機運行時的TLB未命中和頁面錯誤數據,當達到設定的閾值時,在SPT和EPT之間切換,如下圖所示:
當TLB缺失率高于閾值T1并且頁面錯誤頻率低于閾值T2時,從EPT切換到SPT 。
當TLB缺失率低于閾值T1并且頁面錯誤頻率高于閾值T2時,從SPT切換到EPT 。
優勢:有機會充分利用SPT和EPT的優勢,達到更好的表現 。
缺點:
1)很難設置頁表切換閾值,硬件配置可能會影響閾值;
2)SPT和EPT之間的切換也是有成本的,主要是SPT的破壞和重建 。
摘要
一層頁表的明顯優勢是地址翻譯過程成本低,與物理機相同 。要解決的問題是降低地址轉換建立的成本 。一個可能的方向是放棄一些安全性,讓頁表的修改變得更輕;另一個更實際的方向是在適當的場景中使用它,也就是說,在不經常修改頁表的情況下使用load 。
兩層頁表的優點是地址翻譯開銷小,虛擬機可以獨立修改頁表 。要考慮的問題是縮短翻譯路徑 。這個方向其實是很可行的,但是在新硬件的支持下,短期內出現符合要求的新硬件的可能性不大 。

推薦閱讀