VMWare虛擬機處理器數量與每個處理器內核數量概念,以及分配CPU資源詳解

VMWare虛擬機處理器數量與每個處理器內核數量概念,以及分配CPU資源詳解

概念

在這裏插入圖片描述

處理器數量:虛擬機上的CPU個數(上圖中的插槽數,是機器主板上CPU的個數,並非CPU的物理核心數)
每個處理器的內核數量:每個虛擬的CPU有幾個內核(可以看到虛擬機內部並不區分物理核心數和線程數)
處理器內核總數:處理器數量 * 每個處理器的內核數量(即物理機分配給虛擬機的CPU線程數,只要該參數一樣,不管上面兩個參數怎麼調整整機性能都是一致的)
以上3個參數的上限由【當前要安裝的目標操作系統所支持的CPU最大個數、物理機CPU線程總數、VMWare版本所支持的虛擬機最大核心數】三者中的短板決定





CPU的物理核心和超線程

問題:現有一臺CPU爲12核24線程的物理機(該CPU正常發揮水平),要使得目標虛擬機至多擁有其50%的CPU性能,該怎麼分配?
錯誤回答:分配CPU資源時,使“處理器內核總數”等於12就行。
如果將問題中的CPU換爲24核24線程,那這個回答就是正確的。(所以你的CPU如果沒有超線程,那麼文章到這裏就結束了~笑)
超線程的性能並不等於兩個CPU的性能,多出的線程能提供多少性能取決於CPU的架構。(多出的線程性能可用CPU性能測試工具測出)
操作系統在調用有超線程技術的CPU處理多核應用時,優先調用物理核心(物理線程),當所有的物理核心佔滿後再調用超線程技術提供的線程。
比如問題中的CPU有24個線程,其中物理線程爲A1–A12,虛擬線程爲B1–B12,A1與B1同屬於一個核心,當A1佔滿後,操作系統會優先調用A2而不會調用B1。當A1–A12都佔滿後,纔會調用B1–B12(實際調用情況可能不是如此,但是展現出來的算力可以依此表現),所以分配12個線程很可能會出現遠超50%性能的情況。
在這裏插入圖片描述
上圖就是12核24線程的5900X跑CPU-Z的分數,可以看到其多線程倍率(總線程得分/單核單線程得分)並不是24或者接近24的值,而是遠低於24的14.xx。也就是說這顆處理器多出來的線程只增加了(14.73-12)/12=22.75%的性能(但這並不是準確的,請看下面)。








CPU的睿頻機制

在這裏插入圖片描述
目前4C8T起步的主流CPU都有睿頻機制,在CPU只佔用少數核心的情況下把一個或是幾個核心進行頻率加速。
在這裏插入圖片描述
上圖出現的CPU頻率差異會導致全核狀態下的CPU多線程倍率比實際偏低,所以要想得出準確的倍率需要先將CPU頻率鎖定。
兩種鎖定CPU頻率辦法:
1、通過Windows控制面板中的電源選項使更改“最小/最大處理狀態”,使其小於100%
2、通過主板BIOS進行鎖頻
第二種方法由於不同品牌主板BIOS調節步驟不一致,所以這裏介紹第一種方法
在這裏插入圖片描述
在這裏插入圖片描述
設置完後,運行CPU-Z,先勾選與自己CPU核心數一樣的線程數進行測試,驗證線程倍率是否≈核心數量,如果低於,那需要將“最小/最大處理狀態”再次降低。
在這裏插入圖片描述
如上圖,11.68≈12,所以接下來勾選全部線程進行跑分
在這裏插入圖片描述
最後得到多線程倍率爲15.69,若要使虛擬機獲得50%性能,則需要分配15.69*0.5≈8個線程。
在這裏插入圖片描述
驗證:上圖右邊爲分配了8個線程的虛擬機,4993.7/9664.1≈51.7%
測試完成後別忘了把電源計劃還原,否則會限制CPU正常發揮性能。
















總結

對於沒有超線程的CPU:分配給虛擬機的線程數=目標性能比率 * 物理機線程總數
對於有超線程的CPU,若目標性能比率 <= 物理核心數 / 多線程倍率,則分配給虛擬機的線程數 = 目標性能比率 * 物理機多線程倍率;若目標性能比率 > 物理核心數 / 多線程倍率,則分配給虛擬機的線程數 = 物理核心數 + (目標性能比率 - 物理核心數 / 多線程倍率) / (1 - 物理核心數 / 多線程倍率) * 虛擬線程數

PS:這裏的目標性能比率爲【虛擬機至多擁有的CPU性能/物理CPU機性能】;虛擬線程數=CPU總線程數 - 物理核心數;有睿頻技術的處理器需要鎖頻來獲得準確的多線程倍率

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章