轉載自:https://forum.huawei.com/enterprise/zh/forum.php?mod=viewthread&tid=322397&extra=&page=1
背景說明:
在項目和教育訓練中多次被問題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中的預留和份額來配置設定資源。