對於記憶體耗用量過大的虛擬機器,您可以使用進階選項手動覆寫預設的虛擬 CPU 設定。

您可以將這些進階選項新增到虛擬機器組態檔中。

表格 1. 虛擬 NUMA 控制項的進階選項

選項

說明

預設值

cpuid.coresPerSocket

決定每個虛擬 CPU 通訊端的虛擬核心數。如果該值大於 1,且虛擬機器具有虛擬 NUMA 拓撲,則還決定虛擬 NUMA 節點的大小。如果您知道每個實體主機精確的虛擬 NUMA 拓撲,則可以設定此選項。

1

numa.vcpu.maxPerVirtualNode

如果 cpuid.coresPerSocket 嚴格限定為 2 的乘冪,則可以直接設定 numa.vcpu.maxPerVirtualNode。在此情況下,請勿設定 cpuid.coresPerSocket

8

numa.autosize

設定此選項時,虛擬 NUMA 拓撲中每個虛擬節點的虛擬 CPU 數等於每個實體節點的核心數。

FALSE

numa.autosize.once

使用這些設定建立虛擬機器範本時,請保證這些設定在您以後每次開啟虛擬機器電源時保持不變。如果修改了虛擬機器上設定的虛擬 CPU 數,則需要重新評估虛擬 NUMA 拓撲。

TRUE

numa.vcpu.min

在虛擬機器中,要產生虛擬 NUMA 拓撲所需的虛擬 CPU 的最小數目。

9

備註︰

numa.autosize 設定為 TRUE 時,如果該組態是手動或透過指令碼設定的,則一些客體可能無法處理動態變更。

例如,在每個節點具有四個核心的實體主機上設定並測試使用 numactl 系統公用程式設定的 Linux 應用程式。對於具有八個虛擬 CPU 的虛擬機器,主機需要兩個 NUMA 節點。如果相同的虛擬機器在每個節點具有八個核心的系統上執行 (可能會在 vMotion 作業期間發生),且已將 numa.autosize 設定為 TRUE,則只會建立一個虛擬 NUMA 節點 (而非兩個虛擬 NUMA 節點)。當 numactl 參考第二個虛擬 NUMA 節點時,作業將失敗。

為避免此類情形發生,指令碼應當足夠智慧,能首先查詢 numactl --hardware。否則,您必須明確設定 NUMA 拓撲或允許預設的 numa.autosize.once 設定生效。