Virtualization

如何發現虛擬化性能瓶頸?

  • November 6, 2014

我們最近開始將我們的 C++ 建構伺服器從真實機器轉移到虛擬機中。(MS Hyper-V)

我們有一些性能問題,我目前不知道如何解決。我們有:

  • Test-Box- 這是我的同事用來設置虛擬機的桌面工作站硬體,然後我們將其移至實際的伺服器硬體
  • Srv-Box- 這是伺服器硬體
  • Test-Box-Real- 這是直接在 Test-Box 硬體上執行的 Windows
  • Test-Box-VM- 這是 Test-Box HW 上 Hyper-V VM 中的 Windows
  • Srv-Box-Real- 這是在 Srv-Box 硬體上執行的 Server2008R2。
  • Srv-Box-VM- 這是在 Srv-Box HW 上的 Hyper-V VM 中執行的 Windows,即在 Srv-Box-Real 上。

現在,問題是我們比較了Test-Box-Real和之間的建構時間Test-Box-VM,它們基本相等(大約在 2% 以內)。

然後我們將 VM 移到 Srv-Box 機器上,我們看到 和 之間的性能顯著下降Srv-Box-RealSrv-Box-VM也就是說,我們在測試硬體上沒有看到任何差異,但我們現在確實看到實際的性能存在重大差異伺服器硬體。(在 VM 內建構速度大約慢 50%。)

我應該補充一點,Test-Box 和 Srv-Box 都只執行這一個VM,沒有做任何其他事情。

我還應該注意,“真正的”作業系統是 Win2008R2(64 位),而虛擬機託管的作業系統是 Wind2003R2(32 位)。

硬體規格:

  • Srv-Box:

    • Intel XEON E5640 @ 2.67Ghz(這意味著真實係統上有 8 個核心具有超執行緒,而 VM 上“只有”4 個核心,因為 Hyper-V 不允許超執行緒,但核心數量似乎無法解釋問題這裡。)
    • 16GB RAM(我們為 VM 分配了 4GB)
    • 虛擬 DELL RAID 1(2 個 450GB HUS156045VLS600 Hitachi 15k SAS 驅動器)
  • Test-Box:

    • 英特爾至強 E31245 @ 3.3GHz
    • 16GB 記憶體
    • WD VelociRaptor 600GB 10k RPM SATA

再次注意,我只關心 Srv-Box-Real 和 Srv-Box-VM(高)之間的差異與 btw 看到的差異。Test-Box-Real 和 Test-Box-VM(低)。

為什麼在比較 VM 與 Real 性能時一台機器會有奇偶校驗,而另一台(伺服器級硬體不少於)會有很大的差異?(兩者都是 XEON CPU …)

從顯而易見的開始 - 監控性能計數器,如果可能的話,使用 Ressource MOnitor。CPU、IO 處理如何?標準的“瓶頸幾乎是 IO,對於任何擁有超過 2-3 個 VM 的東西來說,你的 2 個驅動器聽起來像是非常糟糕的 IO,尤其是當 C++ 的建構伺服器遇到一些殘酷的事情時(即基於 HEAVY IO,編譯器在通常是,但 C++ 在這個領域相當廣泛——我使用 SSD 只是為了建構)。

這是標準管理員——此時虛擬機沒有什麼特別之處。基本上找到瓶頸你先找到它。

IO 也可以通過 - 動態磁碟。僅有助於在建構步驟(工作文件)中放入非動態光碟。那裡發生了大量的 IO。

現在,是的,Raptor 的 IOPS 比 15k SAS 少,但它很可能是非共享的。

SRV-HW 是否會耗盡所有 CPU 核心?那麼另一個項目…

關於您的 CPU 限制,順便說一句,目前版本的 Hyper-V 支持的核心數量多於每個 VM 4 個,因此可能需要升級… Server 2012 可供幾乎所有不在商店購買盒子的人使用現在,我從 MS 儲存庫中獲得了 8 月 16 日的副本。

但首先您要一步一步地進行正常操作 - 通過使用資源監視器和性能找出瓶頸所在

過去我也遇到過類似的問題,我們追踪到這個問題,在你的物理伺服器上寫記憶體 禁用它,然後再試一次。

要記住的另一件事是你只是在與很多差異作鬥爭,

  1. 虛擬機
  2. 不一樣的記憶
  3. 不同的磁碟(VHD 與物理)

盡可能多地消除並重試。

引用自:https://serverfault.com/questions/423828