逐漸成熟 Intel VT技術性能初探

  當前非常熱門的Virtualization虛擬化技術的出現和應用其實已經有數十年的歷史了,在早期,這個技術主要應用在服務器以及大型主機上面,現在,隨着PC性能的不斷增長,Virtualization也開始逐漸在x86架構的個人電腦上流行起來。

虛擬化技術將各種資源虛擬出多臺主機,以提高這些資源的共享率和利用率

   虛擬化可以將IT環境改造成爲更加強大、更具彈性、更富有活力的架構。通過把多個操作系統整合到一臺高性能服務器上,最大化利用硬件平臺的所有資源,用 更少的投入實現更多的應用,還可以簡化IT架構,降低管理資源的難度,避免IT架構的非必要擴張。客戶虛擬機的真正硬件無關性還可以實現虛擬機的運行時遷 移,可以實現真正的不間斷運行,從而最大化保持業務的持續性,而不用爲購買超高可用性平臺而付出高昂的代價。

  在我們常見的x86架構 上,核心指令集已經幾乎20年都沒有什麼變化了,但Intel和AMD兩個偉大的公司卻一直在往其中添加重大的技術改進,使其繼續保持着新鮮和活力,這些 激動人心的改進包括增強內存尋址能力的64位擴展、處理圖形的更多指令以及浮點計算的增強等等。

  其中和虛擬化技術最爲相關的是:Intel和AMD引入了芯片級的虛擬化輔助技術,這將最終使得虛擬化從市場宣傳走入廣泛的現實應用。

  Intel Virtualization Technology自從在Pentium D 9xx系列CPU上出現已經很有一段時日了,然而我們很少看到有相關的技術介紹和性能分析,因此我們IT168評測中心就意圖對這方面一探究

   當前非常熱門的Virtualization虛擬化技術的出現和應用其實已經有數十年的歷史了,在早期,這個技術主要應用在服務器以及大型主機上面,現在,隨着PC性能的不斷增長,Virtualization也開始逐漸在x86架構的個人電腦上流行起來。

虛擬化技術將各種資源虛擬出多臺主機,以提高這些資源的共享率和利用率

   虛擬化可以將IT環境改造成爲更加強大、更具彈性、更富有活力的架構。通過把多個操作系統整合到一臺高性能服務器上,最大化利用硬件平臺的所有資源,用 更少的投入實現更多的應用,還可以簡化IT架構,降低管理資源的難度,避免IT架構的非必要擴張。客戶虛擬機的真正硬件無關性還可以實現虛擬機的運行時遷 移,可以實現真正的不間斷運行,從而最大化保持業務的持續性,而不用爲購買超高可用性平臺而付出高昂的代價。

  在我們常見的x86架構 上,核心指令集已經幾乎20年都沒有什麼變化了,但Intel和AMD兩個偉大的公司卻一直在往其中添加重大的技術改進,使其繼續保持着新鮮和活力,這些 激動人心的改進包括增強內存尋址能力的64位擴展、處理圖形的更多指令以及浮點計算的增強等等。

  其中和虛擬化技術最爲相關的是:Intel和AMD引入了芯片級的虛擬化輔助技術,這將最終使得虛擬化從市場宣傳走入廣泛的現實應用。

  Intel Virtualization Technology自從在Pentium D 9xx系列CPU上出現已經很有一段時日了,然而我們很少看到有相關的技術介紹和性能分析,因此我們IT168評測中心就意圖對這方面一探究。

  軟件虛擬化主要的問題是性能和隔離性。Full Virtualization完全虛擬化技術可以提供較好的客戶操作系統獨立性,不過其性能不高,在不同的應用下,可以消耗掉主機10%~30%的資源。 而OS Virtualization可以提供良好的性能,然而各個客戶操作系統之間的獨立性並不強。無論是何種軟件方法,隔離性都是由Hypervisor軟件 提供的,過多的隔離必然會導致性能的下降。

  這些問題主要跟x86設計時就沒有考慮虛擬化有關。我們先來看看x86處理器的Privilege特權等級設計。

  x86架構爲了保護指令的運行,提供了指令的4個不同Privilege特權級別 ,術語稱爲Ring,從Ring 0~Ring 3。Ring 0的優先級最高,Ring 3最低。各個級別對可以運行的指令有所限制,例如,GDT,IDT,LDT,TSS等這些指令就只能運行於Privilege 0,也就是Ring 0。 要注意Ring/Privilege級別和我們通常認知的進程在操作系統中的優先級並不同。

   操作系統必須要運行一些Privilege 0的特權指令,因此Ring 0是被用於運行操作系統內核,Ring 1和Ring 2是用於操作系統服務,Ring 3則是用於應用程序。然而實際上並沒有必要用完4個不同的等級,一般的操作系統實現都僅僅使用了兩個等級,即Ring 0和Ring 3,如圖所示:

   也就是說,在一個常規的x86操作系統中,系統內核必須運行於Ring 0,而VMM軟件以及其管理下的Guest OS卻不能運行於Ring 0——因爲那樣就無法對所有虛擬機進行有效的管理,就像以往的協同式多任務操作系統(如,Windows 3.1)無法保證系統的穩健運行一樣。在沒有處理器輔助的虛擬化情況下,挑戰就是採用Ring 0之外的等級來運行VMM (Virtual Machine Monitor,虛擬機監視器)或Hypervisor,以及Guest OS。

  現在流行的解決方法是Ring Deprivileging(暫時譯爲特權等級下降) ,並具有兩種選擇:客戶OS運行於Privilege 1(0/1/3模型),或者Privilege 3(0/3/3模型)。

  無論是哪一種模型,客戶OS都無法運行於Privilege 0,這樣,如GDT,IDT,LDT,TSS這些特權指令就必須通過模擬的方式來運行,這會帶來很明顯的性能問題。特別是在負荷沉重、這些指令被大量執行的時候。

  同時,這些特權指令是真正的“特權”,隔離不當可以嚴重威脅到其他客戶OS,甚至主機OS。Ring Deprivileging技術使用IA32架構的Segment Limit(限制分段)和Paging(分頁)來隔離VMM和Guest OS,不幸的是EM64T的64bit模式並不支持Segment Limit模式 ,要想運行64bit操作系統,就必須使用Paging模式。

   對於虛擬化而言,使用Paging模式的一個致命之處是它不區分Privileg 0/1/2模式,因此客戶機運行於Privileg 3就成爲了必然(0/3/3模型),這樣Paging模式纔可以將主機OS和客戶OS隔離開來,然而在同一個Privileg模式下的不同應用程序(如, 不同的虛擬機)是無法受到Privileg機構保護的,這就是目前IA32帶來的隔離性問題,這個問題被稱爲Ring Compression

IA32不支持VT,就無法虛擬64-bit客戶操作系統

  這個問題的實際表現是:VMware在不支持Intel VT的IA32架構CPU上無法虛擬64-bit客戶操作系統,因爲無法在客戶OS之間安全地隔離。

 我們談到了目前IA32架構採用Ring等級帶來的虛擬化難題,自然而言地,我們可以預料到Intel Virtualization Technology可以解決這些問題。

  不錯,Intel VT就是爲此而生!

Intel VT下面的VMM其實可以認爲就是主機操作系統

   作爲一個芯片輔助(Chip-Assisted)的虛擬化技術,VT可以同時提升虛擬化效率和虛擬機的安全性,下面我們就來看看Intel VT帶來了什麼架構上的變遷。我們談論的主要是IA32上的VT技術,一般稱之爲VT-x,而在Itanium平臺上的VT技術,被稱之爲VT-i。

  VT-x將IA32的CU操作擴展爲兩個forms(窗體):VMX root operation(根虛擬化操作)和VMX non-root operation(非根虛擬化操作), VMX root operation設計來供給VMM/Hypervisor使用,其行爲跟傳統的IA32並無特別不同,而VMX non-root operation則是另一個處在VMM控制之下的IA32環境。所有的forms都能支持所有的四個Privileges levels,這樣在VMX non-root operation環境下運行的虛擬機就能完全地利用Privilege 0等級。

兩個世界:VMX non-root和VMX root

   和一些文章認爲的很不相同,VT同時爲VMM和Guest OS提供了所有的Privilege運行等級,而不是隻讓它們分別佔據一個等級:因爲VMM和Guest OS運行於不同的兩個forms。

   由此,GDT、IDT、LDT、TSS等這些指令就能正常地運行於虛擬機內部了,而在以往,這些特權指令需要模擬運行。而VMM也能從模擬運行特權指令 當中解放出來,這樣既能解決Ring Aliasing問題(軟件運行的實際Ring與設計運行的Ring不相同帶來的問題),又能解決Ring Compression問題,從而大大地提升運行效率。Ring Compression問題的解決,也就解決了64bit客戶操作系統的運行問題。

   爲了建立這種兩個虛擬化窗體的架構,VT-x設計了一個Virtual-Machine Control Structure(VMCS,虛擬機控制結構)的數據結構,包括了Guest-State Area(客戶狀態區)和Host-State Area(主機狀態區),用來保存虛擬機以及主機的各種狀態參數,並提供了VM entry和VM exit兩種操作在虛擬機與VMM之間切換,用戶可以通過在VMCS的VM-execution control fields 裏面指定在執行何種指令/發生何種事件的時候,VMX non-root operation環境下的虛擬機就執行VM exit,從而讓VMM獲得控制權,因此VT-x解決了虛擬機的隔離問題,又解決了性能問題。

   我們可以看到VT帶來的CPU內部運行架構的重大改變,然而在實際上用戶可能完全不能感受出來,假如用戶不能感受到實際操作上有所改變,或者性能沒有增長,那麼這個技術有沒有用就很難說。因此我們實際測試了Intel VT技術的性能表現。

  爲了搭建一個虛擬化環境,我們選用了VMware Server 1.0.3虛擬機軟件。主流的虛擬機軟件都開始支持x86虛擬化技術了——包括Intel VT和AMD-V。

   軟件虛擬化領域的巨頭VMware的產品是完全虛擬化的著名例子,一般的VMware Workstation和VMware Server都屬於Hosted Architecture寄居架構,而企業級產品VMware ESX Server則屬於Bare Metal Architecture裸金屬架構,這種架構在商業化產品上很難得,可以充分地發揮硬件的威力。我們使用VMware Server的原因是:易於使用。ESX Server難以配置。

  Microsoft Virtual Server 2005 R2發佈也有了一段時日,雖然仍不如VMware完善,不過提供了一些VMware不能提供的有趣特性。

 

  Xen一般應用在Unix類Unix環境。

  VMware Server包含了很多組件。

  你可能不會相信,這麼強大的軟件是免費的。

  Intel方只有在支持VT的CPU上才能安裝64-bit客戶操作系統。

  強大的網絡功能是VMware的特色:兩個VMware虛擬網卡。VMware可以實現非常複雜的虛擬化網絡環境。

 

  可以直接存取物理磁盤也是一個獨特的優勢,這可以帶來性能上的提升。

  一般而言,預先分配所有的磁盤空間(上一個選框)和分割磁盤爲2GB的文件(下一個選框)可以提升性能。

  SCSI類型的虛擬磁盤在實際使用SCSI的時候可以提供不錯的性能,同時,在建立服務器羣集的時候,這是必須的。

  提供虛擬SMP的支持,最多虛擬2個處理器(在硬件不支持SMP的時候都可以)。

  同時運行兩個虛擬機,VMware就建立兩個VMware Server VMX進程。

  每個虛擬機虛擬了兩個CPU,因此每個VMware Server VMX進程就具有兩個虛擬CPU線程,並分佈在我們硬件的兩個CPU核心上。

 

   我們分別在Window Server 2003 R2 Enterprise Edition SP2的32bit和64bit環境下進行了測試——主機操作系統和客戶操作系統都分別採用了這兩種操作系統,並再分別測試了VT和無VT下的表現。主機 的性能也進行了測試。

  對於虛擬機應用而言,CPU性能、內存性能、IO性能是最重要的,因此我們選用了數種測試硬件來測試CPU性能、內存性能和磁盤性能,這只是一個初步的測試(儘管測試起來也比較複雜),如網絡IO性能的測試也很重要,不過並不在今次測試的範圍內。

CPU性能

  在僅運行單個虛擬機的情況下,理論測試表明,在32bit主機操作系統下打開VT並沒有性能上的優勢——64bit下則相反,打開VT可以獲得更好的CPU性能。

  雖然VMware虛擬出來的顯卡並不能支持“硬件”3D操作,不過OpenGL仍然可以運行,我們可以看出其虛擬OpenGL運行的性能非常之低,這時VT在32bit下的CPU表現不錯。

  總體而言,VT在CPU性能上沒有顯示出什麼特別的地方,看來VT須要在更大的虛擬機負荷下才能表現出其性能上的優勢。

內存性能

  由於虛擬架構改變,VT下的內存性能表現非常好,如WinRAR這樣的成績非常突出。

磁盤性能

  虛擬機情況下的磁盤性能非常之強勁,這是因爲相關的數據很容易地就可以緩衝的緣故,這需要大量的內存支持。

  這是我們虛擬機所在的硬盤HD Tach RW測試成績,虛擬機的虛擬磁盤都位於這個WD3200YS的前端。

  32bit Host OS/32bit Guest OS,VT打開下的HD Tach RW,讀寫速度和WDC3200YS前段速度一致,而突發速率則要高出不少。

  32bit Host OS/64bit Guest OS下的突發傳輸更快,達到了349.1MB/s,這實際上表現了64bit系統比32bit系統的內存性能更加強勁。

  64bit Host OS/32bit Guest OS,沒有打開VT的情況下,也能提供很不錯的突發速度:300.5MB/s。

  64bit Host OS/32bit Guest,打開VT之後與上面對比,突發略有下降。

64bit性能

  毫無疑問,64bit下可以提供更好的CPU性能、內存性能。

  [IT168評測中心觀點]由於使用了負荷並不算強的理論測試軟件,因此僅能測試架構帶來的理論性能表現:CPU理論性能方面並無太大差別,而內存性能則使用VT後具有明顯的提升。

在Intel CPU上,通過VT的支持,可以實現如圖的應用

   同時,Intel的Long模式64bit無法提供內存隔離所需要的足夠保護措施,而通過Intel VT技術,則能解決這個問題,因此Intel CPU只有具有VT技術的時候才能運行64bit虛擬機。更好的隔離性或許用戶一眼無法看到,然而當客戶操作系統異常崩潰的時候,你纔可以感覺到它的用 處。

VMware可以建立複雜的虛擬網絡環境,這些都可以在同一臺主機上實現

   VT技術通過爲VMM提供了一個單獨的VMX root operation環境,與普通虛擬機的VMX non-root operation環境隔離開來,通過讓虛擬機也能執行Privilege 0特權指令,降低虛擬代碼轉換的損耗來達到提升性能的目的,測試中的負載很低,因此並沒有體現出什麼優勢。我們預計在如上圖般繁重複雜的虛擬環境下VT技 術可以表現出明顯的優勢,頻繁的虛擬機切換、特權指令執行、虛擬中斷等,可以讓VT架構得到充分的發揮。

  在3~4個虛擬機的普通CPU負載下,VMware有望從芯片輔助的虛擬化技術中獲益,我們期望在下一篇文章中對ESX Server 3.0進行測試,ESX看起來可以充分利用新的處理器特性,應該會有大量的性能提升。

   以前的Vanderpool,現在的Intel Virtualization Technlogogy已經消除了困擾x86虛擬化廠商很長時間的許多硬件難題,提供了更好的性能和隔離/安全性,這也意味着所有聰明的技術設計人員能夠 最終實現自己的夢想:通過解決性能和管理問題來將服務器虛擬化成熟地提供給各種應用環境。現在,虛擬化市場正在向成熟穩步邁進,更多的桌面用戶、企業用戶 將可以享受這個“免費”的虛擬化技術帶來的好處。

 

轉自:http://www.vmsky.com/trend/05/2009/02/10/313.html

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章