VMWare虛擬機處理器數量與每個處理器內核數量概念,以及分配CPU資源詳解
- 概念
- CPU的物理核心和超執行緒
- 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總執行緒數 - 物理核心數;有睿頻技術的處理器需要鎖頻來獲得準確的多執行緒倍率
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/243995.html
標籤:其他
上一篇:總結今天的面試經歷
下一篇:2020VC程式設計復習
