Windows-Server-2008

在 VM 中執行高 CPU 使用率應用程序時,我能否充分利用虛擬機管理程序的物理 CPU 核心的性能?

  • October 21, 2010

我目前有一個 IIS 應用程序池在具有 2 個四核處理器的物理伺服器上執行,所有核心的平均使用率為 50%。我需要使這個應用程序具有高可用性,在研究了我們的選項後,我決定在虛擬機中使用這個應用程序創建一個 Hyper V 集群。

我擔心的是虛擬機只有 4 個 vCPU,根據我之前在另一台 Hyper V 伺服器上看到的特性,似乎 1 個 vCPU 只能最大化物理 CPU 的一個核心。即使 vCPU 處於 100%,它也無法利用其他物理核心的處理能力。如果這個觀察結果是正確的,那麼基於我目前在 8 個核心上 50% 的使用率(不考慮虛擬化本身固有的成本),我已經使用了 4 個核心的 100%。

在研究這個問題時,我觀看了關於 Hypervisor CPU 使用率的Brian Ehlert youtube 影片,並閱讀了他的 Hyper-v Concepts vCPU Tecknet wiki 條目。根據我對 Brian 所說的理解,由於執行應用程序池的 w3wp.exe 程序正在啟動並拆除工作執行緒以處理單個使用者與我們網站的連接,因此這些離散連接應該提供 vCPU 可以的斷點當虛擬機只有 4 個 vCPU 時,足夠快地從一個物理處理器轉移到下一個物理處理器,以使我能夠利用物理系統的所有 8 個核心的性能。

這仍然不符合我的要求,並且與我所看到的背道而馳。由於單個 vCPU 必須完成其目前處理才能切換到另一個物理 CPU,這意味著單個 vCPU 無法實現比一個核心的 100% 更高的物理 CPU 淨使用率。如果應用程序執行緒沒有斷點,那麼這將是一個物理核心的 100%,如果應用程序執行緒確實有斷點,允許管理程序將 vCPU 移動到下一個物理核心,那麼使用率可能是 25四核系統中每個物理核心的百分比,而最終的總數仍被限制為單核的 100%。

基於這個推理,當所有核心的物理核心的 vCPU 使用率相加時,1 個 vCPU 似乎永遠無法利用所有物理核心的總百分比高於單個核心的 100%。

最終,這意味著即使 VM 有 4 個 vCPU 並且在具有 16、32 甚至 64 個物理核心的系統上執行,我也無法從 VM 內部實現 8 核系統的性能水平。

有沒有辦法在單個 VM 中實現我正在尋找的性能?

根據我對 Brian 所說的理解,由於執行應用程序池的 w3wp.exe 程序正在啟動並拆除工作執行緒以處理單個使用者與我們網站的連接,因此這些離散連接應該提供 vCPU 可以的斷點當虛擬機只有 4 個 vCPU 時,足夠快地從一個物理處理器轉移到下一個物理處理器,以使我能夠利用物理系統的所有 8 個核心的性能。

回到閱讀有關處理器如何工作的一些基礎知識。觀點。沒有辦法(!)欺騙 4 個虛擬核心以使用 8 個物理核心至 100%。在虛擬機之外沒有可見的“斷點”。

每個 VM 基本上限制為 4 個虛擬核心。現在,您可以集群/NLB 並使用多個虛擬機。

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