如何讓Hyper-V發(fā)揮最佳性能? |
發(fā)布時間: 2012/7/4 19:09:57 |
為新部署的微軟Hyper-V環(huán)境中的主機和網絡挑選合適的硬件并非易事,更不用說在生產環(huán)境中衡量和監(jiān)控性能這項任務了。在本文中,我將剖析組成Hyper-V底層硬件架構的不同部件,先從處理器的配置開始說起,之后會介紹內存、存儲和網絡等子系統(tǒng)。 然后我們會深入介紹提升性能的方法和技巧、如何選擇合適的Hyper-V版本、配置方面的常見問題,最后介紹虛擬機的性能監(jiān)控以及這與物理環(huán)境監(jiān)控有何不同之處。 注意:所有建議都適用于Windows Server 2008 R2(含服務包1)中的Hyper-V.就可擴展性方面的局限而言,即將推出的Windows Server 8中新的Hyper-V版本有了很大的改進,但是這不是本文探討的話題。這里給出的建議只適用于最新的Windows版本。 虛擬處理器和邏輯處理器 我接觸的IT管理員對于虛擬處理器和邏輯處理器是什么,它們對于某一個物理主機上虛擬機的最大數量有何影響經常存在一種誤解。這不僅與分配給虛擬機的處理器數量有關,還與每個主機的物理內存數量直接有關(下一回會介紹)。 邏輯處理器是多核處理器的一個核心,所以一個四核處理器有四個邏輯處理器。如果該四核處理器有超線程(Hyper Threading)技術,它會顯示為八個核心;這意味著,你的系統(tǒng)有八個邏輯處理器。盡管微軟的說明文檔這么介紹邏輯處理器,但是要注意:超線程并不會神奇地讓處理器容量翻番。為了穩(wěn)妥起見,就看核心算作邏輯處理器——如果你啟用了超線程技術,其數量也不會翻番。 虛擬處理器是你分配給一個個虛擬機的資源;你能分配多少個虛擬處理器,取決于訪客/虛擬機操作系統(tǒng)。在這里,操作系統(tǒng)版本越新,功能就越強;所以Windows 2008/2008 R2能與四個虛擬處理器協(xié)同運行,而Windows Server 2003只能被分配一兩個虛擬處理器。SuSE Linux企業(yè)版、CentOS和紅帽企業(yè)版Linux(它們都是得到支持的操作系統(tǒng)版本)最多可以被分配四個虛擬處理器。如果你在虛擬桌面基礎架構(VDI)環(huán)境中運行客戶機操作系統(tǒng),Windows 7最多可以與四個虛擬處理器協(xié)同運行,Vista能看到兩個虛擬處理器,Windows XP SP3能看到兩個虛擬處理器。這里有更詳細的信息:http://technet.microsoft.com/en-us/library/cc794868(WS.10)。aspx. 就因為你為某一個虛擬機分配了兩個或四個虛擬處理器,并不是說你應該這么做。首先,由于跨處理器的通信,在任何多處理器系統(tǒng)中存在一定的開銷——無論是物理處理器還是虛擬處理器。但是在較新的操作系統(tǒng)中開銷比較低,所以Windows 2008 R2虛擬機使用四個虛擬處理器沒什么問題,而Windows Server 2003可能需要進行測試,看看在你的特定環(huán)境下使用兩個虛擬處理器有沒有好處。其次,這完全取決于工作負載——有些應用程序是密集的多線程(想一想SQL Server等類似應用),使用幾個虛擬處理器比較好;而單線程應用程序或者只有幾個線程的應用程序得到的好處并不大。 另一個常見的誤解是,為虛擬機分配一個或多個虛擬處理器與物理核心有關系。為虛擬機分配虛擬處理器其實更像為虛擬機分配一段預定的處理器時間,而虛擬機管理程序實際上把運行虛擬機的負擔分攤到所有可用的處理器核心上。 分配給某一個主機上多個虛擬機的虛擬處理器數量與微軟的這個建議密切相關:一個系統(tǒng)中每個邏輯處理器的虛擬處理器至少是4個,每個邏輯處理器的虛擬處理器最多是8個。例外情況是:如果你在VDI環(huán)境下是清一色的Windows 7虛擬機,支持的最大比率是12;也就是說每個邏輯處理器的虛擬處理器最多可以是12個。 如果你有配備2個四核處理器(即八個邏輯處理器)的Hyper-V主機,那么運行8個虛擬機完全沒問題,每個虛擬機有4個虛擬處理器(共32個虛擬處理器)和最多16個虛擬機(共64個虛擬處理器)。如果你為每個虛擬機只分配了兩個虛擬處理器,那么在每個虛擬機一模一樣的這個例子中把那些數量提高一倍。當然,在實際情況下,不同虛擬機中虛擬處理器的數量會有所不同,具體看里面運行的工作負載。 想查看你主機上虛擬處理器與邏輯處理器的比率,你可以手動查看每一個運行的虛擬機,然后累計被分配的虛擬處理器的總數,這個方法不是很方便。更好的辦法就是運行這個簡單的PowerShell cmdlet命令,它會給出答案: write-host (@(gwmi -ns rootvirtualization MSVM_Processor)。count / (@(gwmi Win32_Processor) | measure -p NumberOfLogicalProcessors -sum)。Sum) "virtual processor(s) per logical processor" -f yellow 多謝微軟的虛擬化項目經理Ben Armstrong給出了這個方法。 圖1表明了我啟用了超線程技術的四核筆記本電腦上的數值(共8個邏輯處理器),有4個虛擬機在運行,每個虛擬機有4個虛擬處理器。 圖1:使用這個簡單的cmdlet命令,很容易搞清楚Hyper-V主機上虛擬處理器與邏輯處理器的比率。 了解你在每個虛擬機上要運行的工作負載和應用程序,這點也很重要:它們是不是受處理器的限制還是受內存的限制?它們是否得益于多線程,因而是否得益于額外的虛擬處理器? 確保你購買的處理器支持二級地址轉換(SLAT),英特爾稱之為擴展頁表(EPT),AMD則稱之為快速虛擬化索引(RVI),AMD早期的說明文檔稱之為嵌套頁表(NPT)。比較舊的處理器不支持SLAT,這意味著每個虛擬機將多占用10MB至30MB的內存,處理器占用率將增加10%或更多。 SLAT可以帶來顯著的效益,具體視工作負載而定。如果你對遠程桌面服務(Remote Desktop Services)進行虛擬化處理,可能會看到SLAT處理器支持的會話數量最多增加40%.搭載大容量二級緩存和三級緩存的處理器也有助于處理要求大量內存的工作負載。 圖2:為虛擬機分配虛擬處理器很容易;只要從列表中進行選擇即可。 最后,如果你有一個主機,但處理器資源有限,那么你只要使用虛擬機預留設置和虛擬機限額設置,就可以改變諸虛擬機之間的平衡關系;虛擬機預留設置確保了虛擬機總是可以使用這個數量的處理器資源(但限制了可以在主機上運行的虛擬機總數),虛擬機限額設置控制著虛擬機可以使用多少被分配的處理器容量,Relative weight(相對權重)將該虛擬機與其他運行的虛擬機作一平衡;如果這個值比較低,意味著它在競爭時間段獲得的資源會比較少。微軟的建議是,除非你有充足的理由要改動,否則別去改動這些設置。 還有處理器兼容性設置,讓你可以在擁有不同年代處理器的主機之間遷移虛擬機,還讓你可以運行版本很老的操作系統(tǒng),比如Windows NT. 本文出自:億恩科技【mszdt.com】 |