以下文章部分內容參考自Run!PC160期,”x86伺服器虛擬化的進度/何信達”一文
----------------------------------------------------------------------------------------------------------------------------------
前陣子買Notebook時作了一點功課,在比較CPU效能時,發現Intel有一項新的賣點,就是虛擬化技術
(Virtualization Technology).而許多人花了錢,買了俱有VT的CPU,真的能增加效能嗎?事實上大部分的User根本用不到VT,那麼VT到底是什麼呢?
在伺服器的領域當中,常為了節省硬體成本,而在一部server利用虛擬機器軟體,模擬出數台虛擬伺服器,達到一機多用的結果,但是這樣所帶來的缺點,就是效能大大地降低,而VT技術就是在CPU裡動手腳,使得虛擬系統可以更快速的使用硬體,這樣不僅能讓可以增加VM數量,提高伺服器使用率,也帶來更大的效能.
目前x86伺服器的虛擬化技的發展,大概有三種不同的架構
不變更作業系統及硬體,虛擬化軟體以應用程式的角色在系統上執行,這樣效能最差,而且其它應用程式亦會影響其效能.
Hypervisor-Based是目前的主流發展,常見的VMWare,Microsoft及Xen皆屬於這種,概念上就是簡化及加速虛擬化軟體使用硬體,實作的方式大概又分為兩種,一種將虛擬機所需要的driver內建於原作業系統中,這麼一來,作業系統就會變的很龐大,另一種方式就是由各虛擬機器管理各自的driver,這樣可以達到比較好的效能,例如WinHEC裡提到的MicroKernelize架構,使得虛擬機器可以直接使用硬體.
這是目前許多人在探討的一項新技術,像是Qumranet所提出的KVM(Kernel-based Virtual Machine)概念,讓作業系統的kernel可以直接使用Intel VT或AMD-V的虛擬化技術,在kernel上需要搭配QEMU的CPU模擬程式,讓虛擬機器可以直接使用硬體.
以往在x86的protected mode下,有四種優先權的處理模式:Ring0~Ring3,Ring0是最大的權限,可以直接存取硬體,而Ring3就是應用層軟體的權限.一般CPU加上虛擬化軟體的架構下,Hypervisor/VMM擁有Ring0,虛擬機器擁有Ring1,而Ring1要存取硬體需要經過一些轉換,降低了效能,所以VT技術就被提出,用來解決此問題,概念上就是設計一個特殊權限讓虛擬機器可以直接存取硬體,用來管理這個的元件,在Intel CPU上稱作Virtual Machine Extensions,這麼一來,虛擬機器就直接以Ring0執行,而不需經過轉換,效能就可以提升很多.