設定每個 CPU 插槽的 VMware CPU 核心數:最佳實踐

在為新的虛擬機器設定處理器參數時,有幾個關鍵概念需要理解:如何計算每顆 CPU 的處理器核心數以及每個插槽的 CPU 核心數,以及這些設定如何影響虛擬機器的運行速度。此外,了解什麼能確保更好的虛擬機器效能也至關重要:是限制處理器數量並增加單顆 CPU 的核心數,還是使用更多處理器但減少每顆的核心數?

請繼續閱讀,了解這些概念以及在 ESXi 主機上為虛擬機器進行 CPU 配置的基本原則。

NAKIVO for VMware vSphere 備份

NAKIVO for VMware vSphere 備份

為 VMware vSphere 虛擬機器提供全面資料保護及快速還原選項。支援本地、異地及雲端的備份目標。具備防勒索軟體功能。

術語

首先,讓我們來了解在設定 CPU 設定時所使用的術語定義 虛擬機器. 這些術語有助於理解運作原理,並避免對”每顆 CPU 的核心數”、”每個插槽的 CPU 核心數”以及”CPU 核心數與速度的關係”產生混淆。

CPU插槽

CPU插槽 是主機板上用於連接單一實體 CPU 的物理連接埠。每塊主機板至少設有一個 CPU 插槽。伺服器主機板通常配備多個 CPU 插槽,以支援多顆多核心處理器。CPU 插槽針對不同的處理器系列進行標準化設計。Intel 與 AMD 各自的處理器系列採用不同的 CPU 插槽。

CPU

一個 CPU (中央處理器、微處理器晶片或處理器)是一種電腦元件。它是由電晶體組成的電子電路,並連接至插槽上。 CPU 透過執行指令來進行運算、執行應用程式並完成各項任務。

當處理器的時脈速度接近熱阻極限時,製造商便改變了處理器的架構,並開始生產具備多核心的處理器。為避免將實體處理器與邏輯處理器或處理器核心混淆,部分供應商會將實體處理器稱為”CPU插槽”。

CPU 核心

一個 CPU 核心 是處理器中包含 L1 快取的組件。CPU 核心能獨立執行運算任務,無需與其他核心或”大型”處理器中由各核心共享的外部元件進行互動。基本上,核心可視為內建於主處理器中、並連接至插槽的小型處理器。應用程式應支援平行運算,方能合理運用多核心處理器。

超執行緒技術

超執行緒技術 這是一項由英特爾工程師開發的技術,旨在為單核心處理器帶來平行運算能力。超執行緒技術於 2002 年隨 Pentium 4 HT 處理器的發布而問世,並定位於桌上型電腦市場。作業系統會將具備超執行緒技術的單核心處理器識別為擁有兩個邏輯核心(而非實體核心)的處理器。 同樣地,對作業系統而言,具備超執行緒技術的四核心處理器會被視為擁有 8 個核心的處理器。每個核心上執行的執行緒越多,就能並行處理的任務就越多。

現代的英特爾處理器同時具備多核心與超執行緒技術。超執行緒技術通常預設為啟用狀態,並可在 BIOS 中啟用或停用。AMD 同時多執行緒 (SMT) 則是 AMD 處理器中與超執行緒技術相當的功能。

vCPU

一個虛擬處理器 (vCPU) 是一種虛擬處理器,會在虛擬機的虛擬硬體設定中配置為虛擬裝置。虛擬處理器可設定為使用多個 CPU 核心。一個 vCPU 會連接至一個虛擬插槽。

CPU 超額分配

CPU 超額分配 是指向虛擬機器(VM)分配的邏輯處理器數量(即實體主機的 CPU 核心),超過該實體主機上可用的邏輯處理器總數。CPU 超額分配雖能提升資源利用的靈活性與效率,但若總需求超過可用的實體 CPU 容量,便可能導致效能下降。

NUMA

NUMA (非均勻記憶體存取) 是一種應用於多處理器電腦的記憶體設計。其核心概念是為每個處理器提供獨立的記憶體(有別於 UMA,後者所有處理器皆透過匯流排存取共用記憶體)。同時,處理器亦可透過共用匯流排存取其他處理器的記憶體(所有處理器皆可存取電腦上的所有記憶體)。 在多處理器電腦中,CPU 存取自身本地記憶體的速度比存取其他記憶體更快,這正是其效能優勢所在。

The UMA and NUMA design for multiprocessor computers

這些基本架構在現代多處理器電腦中被混合使用。處理器被分組於多核心 CPU 封裝或節點上。屬於同一節點的處理器會像 UMA 架構那樣共享對記憶體模組的存取權限。此外,處理器也能透過共享互連介面存取遠端節點的記憶體。處理器在 NUMA 架構下也會進行此類存取,但效能較低。這種記憶體存取是透過擁有該記憶體的 CPU 來執行,而非直接存取。

The mixed architecture for modern multiprocessor computers

NUMA 節點是由一個 CPU 插槽及其最鄰近的記憶體模組所組成的 CPU/記憶體組合。NUMA 通常在 BIOS 中設定為”節點交錯”或”交錯記憶體”設定。

A multiprocessor server motherboard

範例: 一台 ESXi 主機擁有兩個插槽(兩顆 CPU)和 256 GB 記憶體。每顆 CPU 擁有 6 個處理器核心。此伺服器包含兩個 NUMA 節點。每個 NUMA 節點擁有 1 個 CPU 插槽(一顆 CPU)、6 個核心以及 128 GB 記憶體。

ESXi 會盡可能從虛擬機的”原生”(主)NUMA 節點分配記憶體。若虛擬機負載與 ESXi 伺服器負載發生變化,主節點可自動變更。

vNUMA

虛擬 NUMA (vNUMA) 是 VMware 虛擬機器中對應於 NUMA 的技術。vNUMA 會消耗多個實體 NUMA 節點的硬體資源,以提供最佳效能。vNUMA 技術將 NUMA 拓撲結構公開給來賓作業系統。因此,來賓作業系統能夠識別底層的 NUMA 拓撲結構,以實現最有效率的資源運用。虛擬機器的虛擬硬體版本必須為 8 或更高版本,才能使用 vNUMA。

在 VMware vSphere 6.5 中,vNUMA 的處理能力已大幅提升,且此特點不再受虛擬機器設定中”每插槽 CPU 核心數”的值所控制。預設情況下,對於擁有超過 8 個邏輯處理器 (vCPU) 的虛擬機器,vNUMA 會自動啟用。您也可以透過編輯虛擬機器的 VMX 設定檔並新增以下行,手動為虛擬機器啟用 vNUMA: numa.vcpu.min=X,其中 X 代表虛擬機器的 vCPU 數量。

計算核心數

讓我們來了解如何計算伺服器上的實體 CPU 核心數、邏輯 CPU 核心數及其他參數。

  • 實體 CPU 核心的總數 在主機上的數值是根據以下公式計算得出的:

    (處理器插槽數) × (每顆處理器的核心數) = 實體處理器核心數

    僅需考慮已安裝處理器的處理器插槽。

  • 如果支援超執行緒技術,請計算 邏輯處理器核心的數量 透過使用以下公式:

    (實體處理器核心數) × (2 個執行緒/實體處理器) = 邏輯處理器數

  • 最後,使用單一公式來計算 可用處理器資源 可指派給虛擬機的:

    (CPU插槽數) × (CPU核心數) × (執行緒數)

例如,若您擁有一台配備兩顆處理器的伺服器,每顆處理器各有 4 個核心且支援超執行緒技術,則可分配給虛擬機器的邏輯處理器總數為:

2(CPU)× 4(核心)× 2(超執行緒)= 16 個邏輯處理器

在虛擬機器設定中,可將一個邏輯處理器指派給虛擬機器作為一個處理器或一個 CPU 核心。

至於虛擬機器,由於具備硬體模擬特點,其配置中可使用多個處理器和 CPU 核心進行運作。一個實體 CPU 核心可配置為虛擬機器的虛擬 CPU 或虛擬 CPU 核心。

  • 時脈週期的總數 可用於虛擬機的資源計算方式如下:

    (邏輯插槽數) × (CPU 時脈速度)

例如,若您將虛擬機器設定為使用 2 個 vCPU(各含 2 個核心),而您擁有一顆時脈頻率為 3.0 GHz 的實體處理器,則總時脈頻率為 2 × 2 × 3 = 12 GHz。若在 ESXi 主機上啟用了 CPU 超額分配功能,當虛擬機器執行 CPU 密集型任務時,其可用的時脈頻率可能會低於計算結果。

每個插槽的 CPU 核心數限制

vSphere 7.0 Update 1 中的 CPU/核心限制以及 vSphere 8.0 如下所示。

  • 分配給單一虛擬機器的虛擬處理器插槽數量上限為 768 個。若需分配超過 768 個虛擬處理器,請將虛擬機器設定為使用多核心處理器。
  • 單一虛擬機器最多可分配的處理器核心數為 768。虛擬機器的 CPU 核心數不得超過實體機器的邏輯處理器核心數。
  • CPU 熱插拔. 若虛擬機器擁有 128 個或少於 128 個 vCPU,則無法對該虛擬機器使用 CPU 熱擴充特點,亦無法在虛擬機器處於運行狀態時編輯其 CPU 配置。
  • 作業系統的 CPU 限制. 若作業系統對處理器數量設有上限,而您為虛擬機器指派了更多虛擬處理器,則這些額外的處理器將不會被客體作業系統識別和使用。此類限制可能源於作業系統的技術設計或授權限制。請注意,某些作業系統是按插槽或按 CPU 核心進行授權的(例如, Windows Server 2019).

部分作業系統的 CPU 支援限制:

  • Windows 10 Pro – 2 顆 CPU
  • Windows 10 家庭版 – 1 顆 CPU
  • Windows 10 工作站 – 4 顆 CPU
  • Windows Server 2019 標準版/資料中心版 – 64 個 CPU
  • Windows XP Pro x64 – 2 顆處理器
  • Windows 7 Pro/旗艦版/Enterprise – 2 顆 CPU
  • Windows Server 2003 資料中心版 – 64 個 CPU

您可以查看 vSphere 的設定上限 請至 VMware 網站查閱您環境中所使用的版本。

設定建議

對於較舊的 vSphere 版本,我們建議在虛擬機器 (VM) 設定中優先使用”插槽”而非”核心”。起初,您可能無法在虛擬機器的 CPU 插槽或 CPU 核心設定中,察覺到對虛擬機器效能有顯著差異。請注意某些會產生影響的特點。 當您考慮為虛擬機器設定多個虛擬處理器(插槽)以獲得最佳效能時,請務必留意 NUMA 和 vNUMA。

若 vNUMA 未自動配置,請複製實體伺服器的 NUMA 拓撲結構。以下是針對 VMware vSphere 6.5 及後續版本虛擬機器的建議:

  • 在為虛擬機器定義邏輯處理器(vCPU)數量時,請優先採用”每插槽核心數”的配置方式。持續增加數量,直到總數超過 ESXi 伺服器上單一 NUMA 節點的 CPU 核心數。同樣地,請重複此邏輯,直到超過實體 ESXi 伺服器單一 NUMA 節點上可用的記憶體容量為止
  • 有時,虛擬機器 (VM) 配置中的邏輯處理器數量會超過單一 NUMA 節點上的實體 CPU 核心數,或者記憶體容量會超過單一 NUMA 節點可用的總記憶體容量。為獲得最佳效能,請考慮將邏輯處理器 (vCPU) 的數量分配至最少數量的 NUMA 節點。
  • 若 CPU 數量或記憶體容量超過 CPU 核心數,請勿設定奇數個 vCPU。若記憶體容量超過實體伺服器上單一 NUMA 節點的記憶體容量,亦應遵循此原則。
  • 請勿建立虛擬機器,其 vCPU 數量不得超過實體主機上的實體處理器核心數。
  • 若因系統需求無法停用 vNUMA,請勿啟用 vCPU 熱擴充特點。

若在 vSphere 6.5 之前的版本中已啟用 vNUMA,且您已為虛擬機器定義了邏輯處理器(vCPU)的數量,請在設定虛擬機器的虛擬插槽數量時,將”每插槽核心數”維持為 1(此為預設值)。 這是因為”每個插槽一個核心”的配置,可讓 vNUMA 自動為來賓作業系統選擇最佳的 vNUMA 拓撲。此自動配置能針對伺服器的底層實體拓撲達到最佳效果。 若已啟用 vNUMA,且您使用相同數量的邏輯處理器 (vCPU),但同時增加虛擬 CPU 核心數並減少相同數量的虛擬插槽,則 vNUMA 將無法為虛擬機器設定最佳的 NUMA 配置。結果將導致虛擬機器的效能受到影響並可能下降。

若虛擬機器上安裝的客體作業系統及其他軟體採用”每處理器”授權模式,請將虛擬機器設定為使用較少處理器但具備更多 CPU 核心。例如,Windows Server 2012 R2 採用”每插槽”授權,而 Windows Server 2016 則採用”每核心”授權。

若您在 VMware 虛擬機器的設定中使用 CPU 超額配置,請注意以下數值:

  • 1:1 至 3:1 – 運行虛擬機器應無問題
  • 3:1 至 5:1 – 觀察到效能下降
  • 6:1 – 為因效能大幅下降所導致的問題做好準備

在測試和開發環境中,若 CPU 超額配置的數值處於正常範圍內,即可安全地使用。

在 ESXi 主機上配置虛擬機器

首先,請確定您的實體主機上,虛擬機器為確保正常運作並具備足夠效能所需的邏輯處理器數量(CPU 數量)。接著,請根據前述建議與限制,為虛擬機器設定應配置的虛擬插槽數量(vSphere Client 中的”插槽數量”)以及每插槽的 CPU 核心數量(“每插槽核心數”)。下表可協助您選擇所需的配置。

How to calculate CPU cores per socket for multiprocessor VMs running in VMware

若需為虛擬機器指派超過 8 個邏輯處理器,其計算邏輯依然相同。要在 vSphere Client 中計算邏輯 CPU 的數量,請將插槽數乘以核心數。 例如,若需將虛擬機器設定為使用 2 個 CPU 插槽,且每個插槽各有 2 個 CPU 核心,則邏輯 CPU 總數為 2 × 2 = 4。這表示您應在 vSphere Client 的虛擬機器虛擬硬體選項中選擇 4 個 CPU,以套用此設定。

在 vSphere Client 中設定每顆 CPU 的核心數

以下將說明如何在 VMware vSphere Client 中設定虛擬機器的 CPU 選項。請輸入您的 vCenter Server 在網頁瀏覽器中,開啟 VMware vSphere Client。在導覽窗格中,開啟 Hosts and Clusters,然後選取您要設定的虛擬機器。請確保該虛擬機器已關機,才能變更 CPU 設定。在 vSphere 6.x、7.0 和 8.0 中的設定流程完全相同。

  1. 右鍵點擊虛擬機器,然後在快顯選單中點選 Edit Settings 以開啟虛擬機器設定。
  2. 展開 CPU 中的””部分 Virtual Hardware 的””分頁 Edit Settings 視窗。
  3. CPU. 點擊 CPU 欄位的下拉式選單,並選擇此虛擬機器所需的邏輯處理器總數。在此範例中,我們為 Ubuntu 虛擬機器 (blog-Ubuntu1) 選擇 4 個邏輯處理器。
  4. Cores per Socket. 在此字串中,點擊下拉式選單,並為每個虛擬插槽(處理器)選取所需的核心數。
  5. CPU Hot Plug. 若要使用此特點,請選取 Enable CPU Hot Add 核取方塊。請注意相關限制與需求。

    Configuring processors and the number of cores per CPU for a VM in VMware vSphere Client

  6. Reservation. 為 ESXi 主機或叢集上的虛擬機器選取 CPU 時脈速度(頻率,以 MHz 或 GHz 為單位)的保證最低分配值。
  7. Limit. 設定虛擬機器處理器的最大 CPU 時脈速度。此頻率即為虛擬機器的最高頻率,即使該虛擬機器是 ESXi 主機或叢集中唯一正在運行的虛擬機器,且該主機或叢集尚有更多閒置處理器資源。 所設定的限制適用於虛擬機器的所有虛擬處理器。若虛擬機器擁有 2 個單核心處理器,且限制為 1000 MHz,則兩個虛擬處理器的總時脈速度將為每秒一百萬個時脈週期(每個核心為 500 MHz)。
  8. Shares. 此參數定義虛擬機器在 ESXi 主機或資源池上消耗資源的優先級(低、正常、高、自訂)。與 Reservation 以及 Limit 參數,該 Shares 此參數僅在 ESXi 主機、資源池或 DRS 叢集中缺乏 CPU 資源時,才會套用至虛擬機器。

    可用的選項包括 股份 參數:

    • – 每個虛擬處理器 500 股
    • 正常 – 每個虛擬處理器 1000 個股權
    • – 每個虛擬處理器 2000 個股權
    • 自訂 – 設定自訂值

    越高 Shares 數值越高,ESXi 主機或資源池內為虛擬機器所分配的 CPU 資源量就越多。

  9. Hardware virtualization. 勾選此核取方塊以啟用 嵌套虛擬化. 若您希望在虛擬機器內運行另一台虛擬機器,以進行測試或教學用途,此選項將非常實用。
  10. Performance counters. 此特點用於在測量 CPU 效能後,對安裝於虛擬機器內的應用程式進行除錯與優化。
  11. Scheduling Affinity. 此選項用於將虛擬機器指派給特定的處理器。輸入的值可以如下所示: “0, 2, 4-7”.
  12. I/O MMU. 此特點允許虛擬機器直接存取硬體輸入/輸出裝置,例如儲存控制器、網路卡和顯示卡(而非使用模擬或半虛擬化裝置)。 I/O MMU 亦稱為 Intel 定向 I/O 虛擬化技術 (Intel VT-d) 及 AMD I/O 虛擬化 (AMD-V)。I/O MMU 預設為停用狀態。在 vSphere 7.0 中,此選項已不建議使用。若為虛擬機器啟用 I/O MMU,則該虛擬機器無法透過 vMotion 且不支援快照、記憶體超額分配、虛擬機器暫停狀態、實體網路介面卡共用,以及 NSX 網路虛擬化.

如果您使用獨立的 ESXi 主機,並透過 VMware Host Client 在網頁瀏覽器中設定虛擬機器,其設定原則與 VMware vSphere Client 相同。

在 VMware 工作站中設定每顆 CPU 的核心數

如果您透過 VMware 工作站 並開啟 vSphere 虛擬機器的設定,即可編輯虛擬處理器的基本設定。

  1. 點擊 VM > Settings,請選擇 Hardware 分頁,然後點擊 Processors.
  2. 請選擇虛擬處理器的數量(插槽)以及每個處理器的核心數。

在下圖的螢幕截圖中,您可以看到先前在 vSphere Client 中設定的同一台 Ubuntu 虛擬機器的處理器配置。

總處理器核心數(ESXi 主機或叢集上實體處理器的邏輯核心)會自動計算並顯示於下方。 相較之下,在 vSphere Client 介面中,您需先設定總處理器核心數(即”CPUs”選項),再選擇每個處理器的核心數,系統才會據此計算並顯示虛擬插槽的數量。

How the number of cores per CPU for vSphere VMs is displayed in VMware Workstation

在 PowerCLI 中設定虛擬機器處理器

如果您偏好使用命令列介面來設定 VMware vSphere 的元件,請使用 PowerCLI 來編輯虛擬機器的 CPU 設定。讓我們來了解如何編輯某台虛擬機器的 CPU 設定,該虛擬機器 Ubuntu 19 在 PowerCLI 中。這些指令適用於已關機的虛擬機器。

  1. 若要將虛擬機器設定為使用兩個單核心虛擬處理器(即使用兩個虛擬插槽),請使用以下指令:

    get-VM -name Ubuntu19 | set-VM -NumCpu 2

    若要為虛擬機器設定其他處理器(插槽)數量,請輸入另一個數字。

  2. 在以下範例中,您將看到如何設定虛擬機器以使用兩個雙核心虛擬處理器(使用 2 個插槽):

    $VM=Get-VM -Name Ubuntu19

    $VMSpec=New-Object -Type VMware.Vim.VirtualMachineConfigSpec -Property @{ "NumCoresPerSocket" = 2}

    $VM.ExtensionData.ReconfigVM_Task($VMSpec)

    $VM | Set-VM -NumCPU 2

  • 一旦將新的 CPU 設定套用至虛擬機器,該設定便會儲存於該虛擬機器的 VMX 設定檔中。在我們的情況下,我們檢查 Ubuntu19.vmx 檔案的位置在資料存放區中 VM 目錄內(/vmfs/volumes/datastore2/Ubuntu19/). 包含新 CPU 配置的行位於 VMX 檔案的末尾。

    numvcpus = "2"

    cpuid.coresPerSocket = "2"

  1. 若需減少虛擬機器(VM)的處理器(插槽)數量,請使用與先前相同的指令,並將數量設為較少。例如,若要將虛擬機器的處理器(插槽)設為一個,請使用以下指令:

    get-VM -name Ubuntu19 | set-VM -NumCpu 1

使用 PowerCLI 的主要優勢在於能夠批量配置多台虛擬機器。 任務自動化 若需設定的虛擬機器數量龐大,此方法既重要又方便。請使用 VMware cmdlets 及 Microsoft PowerShell 的語法來建立腳本。

結論

在虛擬機器上執行的應用程式效能,取決於正確的 CPU 和記憶體配置。在 VMware vSphere 6.5 及後續版本中,請為虛擬機器設定較多的 CPU 核心,並採用”每插槽 CPU 核心數”的配置方式。若您使用的是 vSphere 6.5 之前的版本,請配置插槽數量,但不要增加虛擬機器的 CPU 核心數,這是因為新舊版本的 vSphere 中,vNUMA 的運作行為有所不同。 請考量您需安裝於虛擬機器上的軟體授權模式。若軟體採用按 CPU 授權,請在虛擬機器設定中為每個 CPU 配置更多核心。

在 VMware vSphere 中使用虛擬機器時,請務必使用 VMware 備份工具. 使用 NAKIVO Backup & Replication 用於備份您的虛擬機器,包括每個 CPU 擁有多個核心的虛擬機器。定期備份有助於保護您的資料,並在發生災難時恢復資料。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面體驗本解決方案的所有資料保護特點。15 天免費試用。無功能或容量限制。無需提供信用卡資訊。

People also read