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