PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 電腦硬體討論群組 > 效能極限
帳戶
密碼
 

回應
 
主題工具
carejollg
Regular Member
 

加入日期: Feb 2008
文章: 51
[硬體技術]虛擬化時記憶體管理:AMD NPT/Intel EPT簡介

◎標題:[硬體技術]虛擬化時記憶體管理:AMD NPT/Intel EPT簡介
◎前言:在x86架構中,記憶體分頁(page tables)是用來保護記憶體位址,使記憶體在多個程式存取時不互相干擾。然而,記憶體分頁在虛擬化時,得經過VMM(或稱為Hypervisor)中SPT(Shadow Page Table)的轉換,造成效能損耗。如果轉換過程未精確地控制,可能讓虛擬機器中Guest OS所發出的特權指令未適當地產生中斷與例外處理,如果這部虛擬機器是電子商務伺服器,結果是一筆交易資料莫名地消失了,而且事後追查問題根源的難度非常高。

目前,AMD/Intel都提出各自的記憶體分頁虛擬化機制,AMD稱為NPT(Nested Page Tables)而Intel稱為EPT(Extended Page Tables),兩者的運作概念是相同的。這篇文章將簡介相關的原理,並讓網友了解目前x86虛擬化的困難與廠商的處理技術。(相關資料都可以在AMD/Intel官方網站的公開資料找到)

◎AMD NPT中虛擬化的記憶體位置轉換(address translation)
AMD NPT_2.tif
記憶體轉換過程可以先參考下一段所敘述,未虛擬化時的記憶體轉換程序(圖1)。
上圖2中,右側列出Para-virtualization概念圖,並以紫色線段區隔Guest OS與VMM,更詳細的虛擬化圖解請參考段落結束的圖3。

NPT(Nested Page Tables)機制將記憶體轉換過程縮減為2階段。
首先,在Guest OS中(圖2中紫色線段區隔的上半部),當系統開啟一個行程(process)時,作業系統會為這個行程配置一個分頁表。此時,Guest記憶體的線性位址(Guest Linear Address)透過 gPT (Guest Page Tables)映射到Guest的實體位址(Guest Physical Address)。其分頁表(gPT)位於Guest的實體記憶體中,gCR3(Guest中的CR3)相當於硬體的暫存器,負責執行Guest OS中的映射作業。
接下來,藉著實體記憶體中的nPT(nested page tables),將Guest記憶體的實體位址映射到系統的實體記憶體位址。網友可以注意到nPT位於實體記憶體中,硬體上則由nCR3(相對於Guest,nCR3可看成是Host OS中的CR3)負責執行映射作業。

gCR3僅負責管理Guest OS中,記憶體由線性位址(Guest Linear Address)映射到實體位址(Guest Physical Address),其機制與未虛擬化的實體主機相同,網友可以參考下一段落的圖1與說明。在NPT的機制中,如果要存取Guest OS中的記憶體分頁時,Guest的實體位址會先被轉換到系統的記憶體位址(System Physical Address)。如果是從Guest的記憶體線性位址映射到實體記憶體,便以快取的方式記錄在TLB中。

NPT的兩階段記憶體轉換,特點就是將Guest Physical Address→System Physical Address,VMM不用再保留一份SPT(Shadow Page Table),以及以往還得經過SPT這個轉換過程。除了降低各部虛擬機器在切換時所造成的效能損耗外,硬體指令集也比虛擬化軟體處理來得可靠與穩定。

相關資料可以在Google找到外,或者網友可以參考「2007XenSummit-AMD-Barcelona_Nested_Paging_WahligHuang.pdf」這份簡報檔。簡報中提到AMD在Barcelona中已內建NPT指令集,虛擬化軟體方面,Xen 3.0.5版已支援此機制。
AMD NPT_3.tif

◎傳統(未虛擬化)的記憶體位置轉換(address translation)
AMD NPT_1.tif
圖中顯示記憶體位址(address)轉換時,將線性位址(Linear Address)透過分頁表(PT,Page Tables)所記載的內容,映射到實體位址(Physical Address)。其中CR3(Control Register)是一組硬體暫存器,負責執行映射作業並提升記憶體位址轉換效率所需的指令。

◎Intel EPT中虛擬化的記憶體位置轉換(address translation)
Intel EPT_1.tif
圖4簡介Intel EPT概念,原出處是「Intel Virtualization Technology Processor Virtualization Extensions and Intel Trusted execution Technology.pdf」。
為了方便說明Intel EPT與AMD NPT機制在原理上相同,所以改成圖5的解說。網友可以將圖5與圖2做比較,兩圖的差異在圖5中紅色字的部份,這4個紅色字則來自於圖4。
圖5中紅色字的「CR3」其實是圖2的「gCR3」,都是Guest OS的CR3;而圖5「EPT Base Pointer」則是圖2的「nCR3」,相當於Host OS的CR3;接下來,圖5的「Guest Intel 64 Page Tables」對應到圖2的「gPT」;最後,圖5中紅色字的「EPT」相當於圖2的「nPT」,也就是AMD NPT所使用的巢狀分頁表(nested page tables)。

Intel EPT與AMD NPT都是將Guest Physical Address映射到System Physical Address,不經過VMM中的SPT,均是兩階段轉換,目的也是為了降低記憶體轉換時在VMM所產生的效能損耗。

◎簡介記憶體分頁的效能問題
VT-x.tif
藉著Intel簡報內的圖解,簡單說明記憶體分頁在虛擬化所造成效能降低的過程。
圖中可以看到用戶在操作多部虛擬機器時,其實是不斷地在各部虛擬機器間來回切換,每一個切換過程包括「VM Entry」與「VM Exit」,並產生記憶體分頁。這些記憶體分頁記錄著虛擬機器當時的狀態,並由VMM負責管理與轉換各部虛擬機器所產生的分頁。

其實,這也是一種記憶體保護機制。我們可以對照在真實主機中操作時,多個行程(或應用程式)在存取記憶體時,作業系統透過分頁機制保護每個行程所需的記憶體空間。這種類比下,多部虛擬機器就好像多個行程/應用程式一樣,而VMM就相當於作業系統。多部虛擬機器在VMM中切換,就如同多個行程/應用程式在作業系統中切換一樣,差別在於分頁內容不同。因此,作業系統能更有效率地管理記憶體分頁,便可以讓各個行程切換更有效率。同樣的效率瓶頸在虛擬化時,就在VMM如何有效地管理記憶體分頁(請參考圖8中的示意圖)。
Memory Management_s.tif

不過,虛擬化後記憶體管理變得很複雜,況且還有分頁錯誤(Page Fault)、中斷(Interrupt)與例外處理(Exception Handler)等。在沒有硬體輔助指令前,由Xen、VMware等虛擬化軟體負責記憶體管理所有事項,當伺服器虛擬化集中管理時,VMM就可能讓虛擬機器間切換變得緩慢。同樣地,一般實體主機的應用程式開得很多時,用戶也會感覺到應用程式在切換時,效率越來越差,或者開啟多個大量耗用記憶體的應用程式(例如Photoshop),作業系統運作遲鈍等。對記憶體所有存取動作都需要經過分頁映射,所以映射效率決定虛擬機器切換的效能,AMD NPT/Intel EPT便是透過硬體輔助指令降低記憶體管理在虛擬化的效能損耗。

◎結論:等待市場驗證;下一階段,I/O虛擬化與資訊安全
雖然AMD/Intel提供記憶體管理所需的硬體輔助指令,但還需要虛擬化軟體供應商整合,因為每個虛擬化軟體中VMM對記憶體管理的機制並不一定相同,就好像實體主機中,Linux與Windows對記憶體管理也不同。當軟體和硬體整合後,還得經過實際環境應用的驗證,才知道新技術的可靠度與穩定性。

在實體主機上,記憶體管理都經過多年的驗證與不斷地修正,不論是AMD/Intel硬體架構或Apache、Oracle Database、SAP ERP等各種伺服器,才有如今的可靠與穩定。可是在虛擬化過程中,這些機制還是很新穎的技術,有待市場驗證。這是虛擬化應用的潛在風險,在未成熟的情況下,效率是用預算堆出來的,不是一般用戶能負擔的價格。
至於驗證的技術,需要對作業系統有深厚的瞭解(VMM具備Host OS的核心功能,也是一個簡化的作業系統),才能在檢驗過程中,追蹤系統呼叫(system call)在作業系統中是否精確地處理。我自認學識淺薄,沒有這方面的技術,還希望有此能力的網友指教。

Ring 0除了記憶體管理,另一個重要機制就是檔案管理(File Management),這關係著I/O虛擬化指令集。AMD/Intel都將在未來的平臺中納入相關的輔助指令,以及虛擬化軟體整合後與實際運作的驗證。(請參考圖9)
IA32 Privilege Rings.tif
此外,虛擬化成熟後,資訊安全也會形成另一個重要議題。從圖3中可以察覺到VMM處於Ring 0,也就是特權指令所在的階層,一但取得VMM控制權,等於掌控所有虛擬機器。舉例來說,讀、寫分頁表暫存器等指令都是特權指令,也就是在VMM中才可以執行,任意改變分頁表暫存器就可隨意中止某個行程。此時,即使虛擬機器安裝防火牆等系統,也不至連VMM都阻擋吧。這種情況下,防火牆如同虛設般。資訊安全與I/O虛擬化將是下一階段重要議題,有待軟、硬體廠商提出新的解決方案。
     
      

此文章於 2008-03-31 01:32 AM 被 carejollg 編輯.
舊 2008-03-31, 01:23 AM #1
回應時引用此文章
carejollg離線中  
idleic2
Master Member
 

加入日期: Mar 2004
您的住址: 亞洲.台灣.台北
文章: 2,054
檔案 都不見了嗎 ?
 
__________________


ATEN CS-1764 DVI KVMP
(上網)/(CPU:NA)/(MB:NA)/(RAM:NA)/(VGA:NA)/(HDD:NA)/(NA)
舊 2008-03-31, 10:59 AM #2
回應時引用此文章
idleic2離線中  
carejollg
Regular Member
 

加入日期: Feb 2008
文章: 51
檔案都在,就是連不上

原圖檔與文章的PDF版都放在同一個連結路徑,資料夾名稱「Memory Management」:

http://cid-37caf02d123ee280.skydrive.live.com/browse.aspx/公開/Memory%20Management

直接點文章的連結就是出不來,不知是SkyDrive還是我操作不熟悉的問題,請大家再試一試。如果有更理想的圖檔空間,請網友建議,謝謝大家指教。

此文章於 2008-03-31 04:56 PM 被 carejollg 編輯.
舊 2008-03-31, 04:49 PM #3
回應時引用此文章
carejollg離線中  
Adsmt
Golden Member
 
Adsmt的大頭照
 

加入日期: Feb 2004
您的住址: 從來處來
文章: 2,717
http://photobucket.com/
用這個

圖檔要壓縮啊,用 jpg 吧...
還有字體不要強制使用細明體,看起來很礙眼....
舊 2008-03-31, 07:15 PM #4
回應時引用此文章
Adsmt離線中  
carejollg
Regular Member
 

加入日期: Feb 2008
文章: 51
另一個PDF檔案下載處

原文章的PDF放在badongo網路空間,網址在:

Memory Management

沒有密碼,檔案大小為402KB。

Word檔案太大,已經轉成PDF方便網友閱讀。

原圖檔也傳到另一個SkyDrive資料夾:

AMD NPT_1.tif

AMD NPT_2.tif

AMD NPT_3.tif

IA32 Privilege Rings.tif

Intel EPT_1.tif

Memory Management_s.tif

VT-x.tif

造成網友不便,請多包涵,也請大家指教與交流意見,在此先謝謝各位。

Admst網友,抱歉使用新細明體,因為我在FireFox來看,顯示的卻是標楷體,看起來也很礙眼,所以改字體...後續會改善貼文技巧

此文章於 2008-03-31 07:35 PM 被 carejollg 編輯.
舊 2008-03-31, 07:31 PM #5
回應時引用此文章
carejollg離線中  
Chengchu
Senior Member
 
Chengchu的大頭照
 

加入日期: May 2002
您的住址: 居無定所
文章: 1,301
感謝分享,下載研讀中。
可是好多部分都看不太懂Orz。
__________________
「自信モテ生キヨ。
 生キトシ生クルモノ スベテ コレ 罪ノ子ナレバ」

「認めたくないものだな。
自分自身の若さゆえの過ちというものを」
舊 2008-03-31, 08:33 PM #6
回應時引用此文章
Chengchu離線中  
carejollg
Regular Member
 

加入日期: Feb 2008
文章: 51
記憶體管理本來就是複雜與抽象,文章已經儘量力求精確,建議網友可以參考作業系統的書(俗稱恐龍書),Wiki英文網站也很方便,而且免費。

如果網友有程式設計的基礎,其中VMM對分頁錯誤與中斷處理機制,很像是寫程式時除錯的方式。我忘了補上這一段文字與圖,所以提示一下。

目前僅談到AMD/Intel對分頁虛擬化的硬體技術,至於各家軟體產品如何實作,還需要進一步理解。釐清後,應可以知道各家產品強弱與成熟度,未來選用哪家產品等。

去年虛擬化有一波併購潮,應該是廠商看好企業與個人用途的前景,或者說這兩年炒作SOA與Web 2.0,無功而返後再推新的話題。

大致上來看,就一般使用者的虛擬化產品上簡略區分為兩類,一種是操作介面親切為主且需付費,例如VMware Workstation、MS Virtual PC;一種是效能為主,但開放原始碼的XenSource、VirtualBox等。這跟現在作業系統的走向相似,好比Windows與Linux,前者目的在於方便地操作,後者在於效能與彈性等。未來技術更成熟後,產品間並沒有絕對優劣,看我們使用習慣來決定。

此文章於 2008-04-02 03:15 AM 被 carejollg 編輯.
舊 2008-04-02, 03:08 AM #7
回應時引用此文章
carejollg離線中  
idleic2
Master Member
 

加入日期: Mar 2004
您的住址: 亞洲.台灣.台北
文章: 2,054
作業系統的書(俗稱恐龍書)



記憶體 分頁
記憶體 管理
虛擬記憶體

這幾個 部分....
__________________


ATEN CS-1764 DVI KVMP
(上網)/(CPU:NA)/(MB:NA)/(RAM:NA)/(VGA:NA)/(HDD:NA)/(NA)
舊 2008-04-02, 11:16 PM #8
回應時引用此文章
idleic2離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是05:03 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2024。