vSphere - 為 1 個虛擬機分配 100% CPU / 88% 效率
編輯 2:我的應用程序受益於超執行緒
A. 是的,我知道這項技術是什麼以及它的作用
B. 是的,我知道物理核心和邏輯核心之間的區別
C. 是的,關閉 HT 會使渲染執行速度變慢,這是意料之中的!
D. 不,當我將所有邏輯(是邏輯)核心分配給一個 VM 時,我並沒有過度私有化,如果您閱讀 VMWare 的白皮書,您會知道調度程序會生成物理硬體的拓撲圖並在分配時使用該圖資源,將所有邏輯核心分配給一個 VM 在 Windows 中生成 16 個邏輯處理器,就像我將 VM 安裝在物理硬體上一樣。哇,瞧,經過 5 次測試,這種安排產生了最快(和最有效)的渲染時間。
F. 有問題的應用程序是使用 backburner 和 Mental Ray 渲染器的 3ds max 2014。
TL|DR:我(有時)想在 vSphere 上以盡可能高的 CPU 效率執行一個虛擬機,怎麼做?
我希望以一種非標準的方式使用 VMWare 的 ESXI / vSphere 管理程序。
通常人們使用管理程序在一個系統上同時執行多個虛擬機。我想使用管理程序讓我在應用程序之間快速切換,但一次只能真正執行一個虛擬機/應用程序。
這實際上是一個寵物項目,我有一個 5 節點渲染農場(一個節點 2x Intel Xeon E5540),大部分情況下都處於關閉狀態(當我不渲染時,我不需要執行這些機器)。這似乎是在浪費寶貴的計算時間,所以我希望在不渲染時將它們用於其他事情(一種通用的 40 核 / 80 執行緒計算集群)。
我希望 vSphere 可以讓我在渲染時啟動渲染節點虛擬機,而在不渲染時啟動其他操作。問題是,當渲染 VM 執行時,我真的需要高效率的 CPU。
我使用渲染作業作為基準,在虛擬機上獲得大約 88% 的速度,因為我可以在非虛擬機設置上獲得。我希望接近 95%,有什麼想法可以實現嗎?
編輯:詳細資訊:
渲染虛擬機正在使用的資源,我不完全理解為什麼這個欄沒有滿:
該 VM 的資源設置:
即使 VM 未顯示為使用 100% 的資源,主機也會:
我不完全理解這裡的 % 份額,這是所有這些 VM 都打開的時候嗎?此外,我沒有將其他 VM 配置為保留 10%:
最後主機確實顯示為充分利用,雖然此處未顯示,但 MHz 使用率較低(IE 不是 100%):
虛擬機配置:
我知道這是一個有趣的案例,但是我覺得這個問題是有效的和好的,並且可能會幫助其他處於類似情況的人(儘管我承認這個案例非常具體)。
我認為您已經達到了使用這些舊 Xeon 可能獲得的最大性能,儘管與 ewwhite 不同,我不相信超執行緒會給您帶來任何問題。事實上,至少從 ESXi 5.0 開始,VMware 已經建議對大多數工作負載使用超執行緒,而且您自己的測試似乎證實您正在從 HT 中受益。不過,正如 ewwhite 正確指出的那樣,使用 HT 會使 vSphere 中的某些指標看起來很奇怪。
我認為您在這裡有一個明顯的問題,可能還有一個不明顯的問題:
首先是一個明顯的問題,即虛擬化本身會產生您永遠無法完全消除的成本。在 CPU 的情況下,必須虛擬化某些指令,以便管理程序正確地將一個虛擬機與另一個虛擬機隔離。因此,管理程序不會像在裸機中那樣直接執行指令,而是會攔截呼叫並在其位置執行幾條指令。根據之前的經驗,我們可以看到87-90% 大約是您對 CPU 的預期。超越這一點需要硬體方面的重大進步。如果您現在看到 91% 的本機 CPU 性能,那麼它可能已經達到了預期效果。
其次是NUMA這個不明顯的問題。這是多處理器系統的一個問題,其中一部分記憶體在被最近的 CPU 訪問時會更快,而在被其他 CPU 訪問時會更慢。根據渲染作業處理內存的方式,在兩個 VM 中執行兩個並行渲染器**可能會帶來一些好處,每個 VM 都固定到特定的 CPU 並始終訪問稍快的記憶體。(如果您在單個主機上執行兩個虛擬機,每個虛擬機使用一半可用的 vCPU,ESXi 應該會自動為您解決這個問題。)雖然如果您在裸機上沒有看到這個問題,那麼嘗試這個可能不會獲得什麼好處.