多核心處理器為執行虛擬機器多工的主機提供了很多優勢。

Intel 和 AMD 均已開發了將兩個或更多處理器核心合併到單一整合式電路 (通常稱為套件或通訊端) 的處理器。VMware 使用「通訊端」一詞來說明單一套件,該套件可以具有一或多個處理器核心,且每個核心具有一個或多個邏輯處理器。

例如,雙核心處理器透過允許同時執行兩個虛擬 CPU,可以提供幾乎是單核心處理器兩倍的效能。同一處理器中的核心通常設定了所有核心使用的最低層級的共用快取,這可能會減少存取較慢主記憶體的需求。如果在邏輯處理器上執行的虛擬機器正執行爭用相同記憶體匯流排資源且佔用大量記憶體的工作負載,則將實體處理器連線到主記憶體的共用記憶體匯流排可能會限制其邏輯處理器的效能。

ESXi CPU 排程器可以獨立將每個處理器核心的每個邏輯處理器用於執行虛擬機器,從而提供與 SMP 系統類似的功能。例如,雙向虛擬機器可以讓其虛擬處理器在屬於相同核心的邏輯處理器上執行,或在不同實體核心的邏輯處理器上執行。

ESXi CPU 排程器可以偵測處理器拓撲,以及處理器核心與它上面的邏輯處理器之間的關聯性。它使用此資訊來排程虛擬機器並最佳化效能。

ESXi CPU 排程器可以解譯處理器拓撲 (包含通訊端、核心和邏輯處理器之間的關聯性)。排程器使用拓撲資訊最佳化虛擬 CPU 在不同通訊端上的放置位置,可最大化總體快取使用率,並透過最小化虛擬 CPU 移轉來提高快取相似性。

在未認可的系統中,ESXi CPU 排程器會依預設將負載分散到所有通訊端。這樣便可透過最大化可用於執行虛擬 CPU 的快取總量來提升效能。因此,單一 SMP 虛擬機器的虛擬 CPU 在多個通訊端之間分散 (除非每個通訊端本身還是 NUMA 節點,在這種情況下,NUMA 排程器會限制虛擬機器的所有虛擬 CPU 都駐留在同一通訊端上。)

但是,在某些情況下 (例如,當 SMP 虛擬機器在其虛擬 CPU 之間存在大量資料共用時),此預設行為可能不是最佳選擇。對於此類工作負載,最好是排程相同通訊端 (具有最低層級的共用快取) 上的所有虛擬 CPU,即使 ESXi 主機未認可也是如此。在此類情況下,您可以透過將下列組態選項包含在虛擬機器的 .vmx 組態檔中,覆寫在套件之間分散虛擬 CPU 的預設行為:sched.cpu.vsmpConsolidate="TRUE"