背景說明:
在項目和培訓中多次被問題FusionSphere物理CPU和vCPU的對應或分配關系,一個物理CPU能虛擬出多少個vCPU,一個vCPU的主頻是多少等問題。設置了CPU預留、份額與限制之后又是什么情況。
看過之前的一些討論,也沒有定論,本着實踐是檢驗整理的唯一標准,本文通過實驗,並對照相關文檔來梳理這些問題,希望能讓大家有更清楚的理解。
1. 系統可用的VCPU總數計算
服務器CPU信息:
1台R2288H V3,2個CPU, 10 核,超線程為2。總共2x10x2= 40個thread,每個Thread 2.3GHz。
Haswell EP CPU 02311CDJ BC1M12CPU X86 series,2300**z,1.8V,64bit,105000mW,Haswell EP Xeon E5-2650 v3,10Core,with heatsink 2 2
服務器BMC管理界面上查看 CPU信息
Intel官網看到E5-2650的信息

http://ark.intel.com/products/81705/Intel-Xeon-Processor-E5-2650-v3-25M-Cache-2_30-GHz
在主機上部署FusionCompute R5C00, 登錄CNA主機運行xentop命令查看CPU信息
CPUs:40 @ 2294 **z,主頻總容量為40 x 2.294 GHz = 91.76 GHz。
Domain 0默認配置2個VCPU,占用2 x 2.294 = 4.588 GHz
用戶可用的主頻總容量 = 91.76 - 4.588 = 87.172 GHz
FC portal上查看CPU信息,總容量87.17GHz正好等於系統總容量減去Domain 0占用的容量。
結論1: 系統可用的vCPU總數(邏輯處理器) = Socket數(CPU個數)x Core數(內核)x Thread數(超線程)
1個VCPU = 1個超線程Thread。如下圖:
CPU QoS
如圖所示,CPU預留容量為4.59GHz,可用容量為82.58GHz,說明除了VRM01的2個VCPU預留容量4588**z之外的VCPU主頻均是可用的,盡管該環境已創建了7台4 VCPU的VM,還可以創建更多VM,這些VM的VCPU總數可以遠遠超過當前系統顯示可用的38個VCPU。
在不對VRM01的VCPU進行限制的情況下,將VCPU份額自定義為128000,顯示可使用的CPU數為38,說明如果需要的話VRM01可以占用該主機上的除了Domain 0之外的所有VCPU(Domain 0占用了2個VCPU)。
2. 虛擬機VCPU的分配與調度
對虛擬機來說,不直接感知物理CPU,虛擬機的計算單元通過vCPU對象來呈現。虛擬機只看到VMM呈現給它的vCPU。在VMM中,每個vCPU對應一個VMCS(Virtual-Machine Control Structure)結構,當VCPU被從物理CPU上切換下來的時候,其運行上下文會被保存在其對應的VMCS結構中;當VCPU被切換到PCPU上運行時,其運行上下文會從對應的VMCS結構中導入到物理CPU上。通過這種方式,實現各vCPU之間的獨立運行。
從虛擬機系統的結構與功能划分可以看出,客戶操作系統與虛擬機監視器共同構成了虛擬機系統的兩級調度框架,如圖所示是一個多核環境下虛擬機系統的兩級調度框架。客戶操作系統負責第2 級調度,即線程或進程在vCPU 上的調度(將核心線程映射到相應的VCPU上)。虛擬機監視器負責第1 級調度, 即vCPU在物理處理單元上的調度。兩級調度的調度策略和機制不存在依賴關系。vCPU調度器負責物理處理器資源在各個虛擬機之間的分配與調度,本質上即把各個虛擬機中的vCPU按照一定的策略和機制調度在物理處理單元上可以采用任意的策略來分配物理資源, 滿足虛擬機的不同需求。vCPU可以調度在一個或多個物理處理單元執行(分時復用或空間復用物理處理單元), 也可以與物理處理單元建立一對一固定的映射關系(限制訪問指定的物理處理單元)。
3. CPU QoS說明
Hypervisor層根據分時復用的原理實現對VCPU的調度,CPU QoS的原理是定期給各VCPU分配運行時間片,並對各VCPU運行的時間進行記賬,對於消耗完時間片的虛擬CPU將被限制運行,直到獲得時間片。以此控制虛擬機獲得物理計算資源的比例。以上分配時間片和記賬的時間周期很短,對虛擬機用戶來說會感覺一直在運行。
CPU預留定義了分配給該VM的最少CPU資源。
CPU限制定義了分配虛擬機占用CPU資源的上限。
CPU份額定義多個虛擬機在競爭CPU資源的時候按比例分配。
CPU份額只在各虛擬機競爭計算資源時發揮作用,如果沒有競爭,有需求的虛擬機可以獨占主機的物理CPU資源。
如果虛擬機根據份額值計算出來的計算能力小於虛擬機預留值,調度算法會優先按照虛擬機預留值分配給虛擬機,對於預留值超出按份額分配的計算資源的部分,調度算法會從主機上其他虛擬機的CPU上按各自的份額比例扣除。
如果虛擬機根據份額值計算出來的計算能力大於虛擬機預留值,那么虛擬機的計算能力會以份額值計算為准。
以一台主頻為2800**z的單核物理機為例,如果滿負載運行3台單VCPU的虛擬機A、B、C,分配情況如下。
結論2:由於采用分時復用的方式,在不做VCPU預留的條件下,系統可分配給VM的VCPU總數遠遠大於實際可提供的VCPU數目(具體能創建多少額外的VCPU依賴於物理CPU的性能和VCPU的使用情率),在出現資源爭用的時根據CPU QoS中的預留和份額來分配資源。
本文轉載自:https://forum.huawei.com/enterprise/zh/forum.php?mod=viewthread&tid=322397