For virtual machines with disproportionately large memory consumption, you can use advanced options to manually override the default virtual CPU settings.

You can add these advanced options to the virtual machine configuration file.

Advanced Options for Virtual NUMA Controls

Option

Description

Default Value

cpuid.coresPerSocket

Determines the number of virtual cores per virtual CPU socket. If the value is greater than 1, also determines the size of virtual NUMA nodes if a virtual machine has a virtual NUMA topology. You can set this option if you know the exact virtual NUMA topology for each physical host.

1

numa.vcpu.maxPerVirtualNode

If cpuid.coresPerSocket is too restrictive as a power of two, you can set numa.vcpu.maxPerVirtualNode directly. In this case, do not set cpuid.coresPerSocket.

8

numa.autosize

When you set this option, the virtual NUMA topology has the same number of virtual CPUs per virtual node as there are cores on each physical node.

FALSE

numa.autosize.once

When you create a virtual machine template with these settings, the settings are guaranteed to remain the same every time you subsequently power on the virtual machine. The virtual NUMA topology will be reevaluated if the configured number of virtual CPUs on the virtual machine is modified.

TRUE

numa.vcpu.min

Minimum number of virtual CPUs in a virtual machine that are required in order to generate a virtual NUMA topology.

9

Note

When you set numa.autosize to TRUE, and if the configuration is set up manually or with a script, some guests might not be able to handle dynamic changes.

For example, a Linux application configured with the numactl system utility is set up and tested on one physical host with four cores per node. The host requires two NUMA nodes for a virtual machine with eight virtual CPUs. If the same virtual machine is run on a system with eight cores per node, which might occur during a vMotion operation, and numa.autosize is set to TRUE, only one virtual NUMA node will be created (rather than two virtual NUMA nodes). When numactl references the second virtual NUMA node, the operation will fail.

To avoid this, scripts should be intelligent enough to first query numactl --hardware. Otherwise, you must set the NUMA topology explicitly or allow the default numa.autosize.once setting to take effect.