在vSphere5.0中管理CPU資源,首先要正確理解與CPU資源相關的幾個概念:插槽、內核以及vCPU。為便于大家理解,我們將虛擬機與物理服務器進行對比:虛擬機中插槽的概念與物理服務器的物理CPU類似,為虛擬機分配m個插槽,相當于為物理服務器配置了m顆物理CPU。內核是指每個插槽所包含的核心,為虛擬機每個插槽分配的核心數為n個,相當于物理服務器每顆物理CPU的核心數為n。在上述條件下虛擬機獲得的vCPU個數為分配給的插槽數與每個插槽所包含的內核數的乘積,也就是m*n。
創建虛擬機分配vCPU
如下圖1所示,在虛擬機創建向導中為某虛擬機分配的虛擬插槽數為2,每個虛擬插槽的內核數為4,那么該虛擬機的內核總數為2*4=8.
圖1.創建虛擬機時選擇虛擬CPU(vCPU)數量。
為虛擬機分配CPU資源
因為在一臺ESXi主機上可以運行多個虛擬機,所以為虛擬機分配的CPU資源是與運行在同一臺ESXi主機上的所有虛擬機之間進行共享的。與CPU資源管理相關的三個參數是份額(share)、預留(reservation)以及限制(limit)。這三個參數的默認設置如下圖2所示。
圖2. 為虛擬機分配CPU資源
份額為正常,說明與同一ESXi主機關聯的所有虛擬機都將在每個vCPU 上收到相同份額的 CPU。換句話說單處理器虛擬機分配到的資源只有雙處理器虛擬機的一半。既然是這樣,那么為虛擬機分配多個vCPU是不是有利于提高其性能呢?這要視情況而定。比如在單處理器虛擬機(非 SMP 虛擬機)上部署單線程應用程序可獲得最佳的性能和資源利用率。因為單線程應用程序只能利用單個 CPU。在雙處理器虛擬機中部署這些應用程序不會加快應用程序的速度。相反,這樣會使得第二個vCPU 使用本該由其他虛擬機以其他方式使用的物理資源。
預留為0MHz說明不為該虛擬機預留任何資源,沒有設置限制說明虛擬機可以最大化使用ESXi主機的CPU資源。
完成上述兩個步驟的設置后,ESXi主機的CPU調度程序將負責把所有虛擬機的CPU負載分配到所有的物理服務器CPU插槽中,通過最大化可供正在運行的虛擬 CPU 使用的緩存總量來改善性能。
啟用超線程技術
超線程技術允許單個物理處理器內核像兩個邏輯處理器一樣工作。處理器可以同時運行兩個獨立的應用程序。如果ESXi主機所使用的Intel CPU插槽支持超線程技術,那么通過虛擬機屬性的“資源”選項卡下的“高級CPU屬性”可以設置超線程內核的共享模式(圖3)。
圖3. 設置虛擬機超線程內核共享模式以及關聯性
超線程內核共享支持三種模式,即“任意”,“無”和“內部”,其含義如下:
任意:虛擬機的vCPU 可與該虛擬機或任何其他虛擬機的其他vCPU 隨時共享內核,為超線程系統上所有虛擬機的默認設置。
無:虛擬機的vCPU 不應彼此共享內核,或不應與其他虛擬機的vCPU 共享內核。即,該虛擬機的每個vCPU 本身始終應獲得完整的內核,而該內核上的另一個邏輯 CPU則置于暫停狀況。
內部:與將超線程內核共享設置為“無”類似。虛擬機的vCPU 不能與其他虛擬機的vCPU 共享內核。這些vCPU 可以與同一虛擬機的其他vCPU 共享內核。
超線程內核共享模式的具體設置與應用的具體情況和虛擬機的vCPU數量有關。例如,對于與超線程交互不良的工作負載,可以將運行該應用程序的虛擬機置于“無”或“內部”超線程狀態,以將其與其他虛擬機隔離開。但是當虛擬機的內核數量有限時,將超線程內核共享支持模式設置為“無”或“內部”可能會降低虛擬機的性能。
設置CPU關聯性(CPU affinity)
如上圖3所示,我們還可以在高級CPU選項中設置虛擬機的CPU關聯性。通過為虛擬機設置 CPU 關聯性,可以實現該虛擬機固定使用一個或多個物理CPU資源的目的。但在多處理器系統中,ESXi 主機將執行自動負載平衡,所以建議避免手動指定虛擬機關聯性,以改進調度程序跨處理器平衡負載的能力。所以除非特殊要求,建議取消對CPU關聯性的設置。
至此,在vSphere 5.0中為虛擬機配置CPU資源的相關設置就基本完成了,下一篇文章中將介紹如何管理內存資源。