天天看點

Hyper-V性能分析利器HyperV_Mon

當Windows 作業系統運作在Hyper-V平台上時,任務管理器很可能無法正确報告系統的資源資訊,因為CPU等系統資源都是由Hypervisor層來管理和配置設定的。比如,我們在虛機中看到作業系統的CPU使用率是100%,那CPU使用率真的是100%嗎?

“在 Hyper-V 虛拟機中運作來賓作業系統時所産生的CPU 開銷的範圍是 9% 到 12%。例如,在 Hyper-V 虛拟機中運作的來賓作業系統通常有 88–91% 的空閑 CPU 資源可用于在實體硬體上運作的對等作業系統。”

<a href="http://msdn.microsoft.com/en-us/library/cc768536(v=bts.10).aspx">http://msdn.microsoft.com/en-us/library/cc768536(v=bts.10).aspx</a>

那有什麼工具可以很直覺地呈現Hyper-V平台下各虛拟機的性能以幫助了解和必要時候的排查呢?MVP Tim Mangan 開發了HyperV_Mon這個工具,而且是免費釋出的,現在的最新版本是2010年12月29日釋出的1.8版本,可以到這裡下載下傳。

<a href="http://www.tmurgent.com/Tools.aspx">http://www.tmurgent.com/Tools.aspx</a>

這個工具支援Hyper-V和Hyper-V R2,免安裝,輕按兩下就可以運作。在WMI通路允許Hyper-V父分區的條件下,你可以直接在裝有Hyper-V的Server 2008/2008 R2的主機上本地運作此工具,或點選Configure按鈕配置你需要連接配接的Hyper-V主機名稱或IP位址實作遠端通路。出于對伺服器影響最小化的考慮,推薦後者的通路方式。

<a href="http://virtualtom.blog.51cto.com/attachment/201101/10/1203850_1294669594wSnZ.png"></a>

初看這個界面你就會覺得界面的布局和下面一張Hyper-V的架構圖很相似。界面的最下面黑色區域代表硬體層,包含了硬體資訊的描述,中間的Hypervisor層區域,Total代表看到實體CPU的總使用率, Guest代表包括了父分區以及其他正在運作的VM作業系統的總使用率,注意,關鍵詞是包括了父分區和正在運作。HvOh表示Hypervisor Overhead,這裡的HvOh表示Hypervisor層自己的開銷,它的開銷資料代表着父分區和其他VM的開銷。

左上方藍色區域為父分區,它的HvOh開銷多為檔案或者網絡的I/O,更多地最終表現為與虛拟機溝通過程相關的開銷。而右上方黃色區域描述了正在運作的虛拟機的資訊,這些将在下面的例子中展開說明。稍稍說明一下的是,Memory和I/O功能顯示在工具新版本中的功能,在看使用文檔HyperV_Mon.pdf和看我的截圖的時候,你可能有這樣的疑問,例如會問為什麼我截圖中4台虛拟機有3台的Memory和I/O資訊沒有顯示出來。這是正常的,因為這些虛拟機沒有開啟對父分區的WMI通路允許。

<a href="http://virtualtom.blog.51cto.com/attachment/201101/10/1203850_1294669600pTgi.png"></a>

<a href="http://virtualtom.blog.51cto.com/attachment/201101/10/1203850_1294669612CKlx.png"></a>

下面我們做一個壓力測試,配置設定Win7 虛拟機1個虛拟處理器,将CPU使用率提高,從任務管理器中可以看到CPU的資源使用率已經穩定地保持在100%了,事實上是這樣嗎?

<a href="http://virtualtom.blog.51cto.com/attachment/201101/10/1203850_1294669622HIDY.png"></a>

我們從工具中看到,100%的CPU使用率,其實我們被任務管理器騙了。其實作者想說明 Win7這個虛拟機在CPU中的總使用率上占了40%左右 (第一次發文時候說80%,是錯的)。為什麼是40%呢,VM中的CPU使用率是與分給CPU的虛拟處理器相關的。我這裡例子中,我隻分了給這個VM 1個虛拟處理器,我的測試機是Dell的桌上型電腦,CPU是一個雙核的單一CPU,是以Hypervisor層Logical顯示為2,那80%除以2就是40%了。還不明白的話我下面的例子會做進一步對比說明。

<a href="http://virtualtom.blog.51cto.com/attachment/201101/10/1203850_1294669633WZjx.png"></a>

我們再做一個壓力測試,這次配置設定Win7 虛機2個虛拟CPU,從任務管理器中可以看到CPU的資源使用率穩定地保持在100%了,實際上呢? 

<a href="http://virtualtom.blog.51cto.com/attachment/201101/10/1203850_1294669645Yaso.png"></a>

Ok,這裡再展開解釋一下CPU的Guest,第1個VM, 8% 代表一個處理器的8% (或者說占了CPU總可用資源的4%),第2個VM分了2個虛拟處理器,那占了CPU資源的70%,是以,從圖中可以得出,CPU的使用率為父分區14%,VM1 4%,VM2 70%, VM3 0%, VM4 0%的總和88%。下面Hypervisor層直接報告了CPU的使用率為89%,但是這個數字不是加起來的因為不可能同時要求所有元件報告目前資訊。另外,這個開銷是動态的,一直在變動。 

為了更好地了解Hyper-V中CPU的性能,在使用文檔HyperV_Mon.pdf第5頁也做了一個展示。因為Hyper-V 中CPU是虛拟的,和實體CPU 沒有一對一的必然關系,是以假如将壓力都轉移給其中一個虛拟CPU,在Hypervisor層可以看到對實體CPU 的開銷幾乎沒有影響。 

<a href="http://virtualtom.blog.51cto.com/attachment/201101/10/1203850_1294669659GeVV.png"></a>

相信随着版本的更新,HyperV_Mon的功能将會越來越完善。介紹微軟虛拟化工具的中文文檔不多,此文作為新年一個開篇,給大家有需要的時候可以用作一個參考。

本文轉自 VirtualTom 51CTO部落格,原文連結:http://blog.51cto.com/virtualtom/476050,如需轉載請自行聯系原作者

繼續閱讀