VMware

VMware ESX Server 2.0

Features | Documentation | Knowledge Base | Discussion Forums

previous Prev   Contents   Last   Next next

Using Your NUMA System

Using Your NUMA System

ESX Server 2.0 includes additional support for machines that are based on NUMA (Non-Uniform Memory Access) architecture. NUMA machines are made up of multiple nodes (also called CECs on IBM eServer machines).

Each node comprises one to four processors and main memory. In a node, each CPU has the same distance from its "local memory."

Each processor can access memory on any node, but accessing memory on a different node (referred to as "remote memory") is substantially slower than accessing "local memory" that lies on the same node as the processor. That is, the memory access speed for CPUs on a node vary, depending on the "distance" of the memory from the node.

For additional information on NUMA and supported NUMA platforms, refer to the VMware ESX Server2 NUMA Support White Paper, available at www.vmware.com/pdf/esx2_NUMA.pdf.

For more information on NUMA management by VMware ESX Server, see the numa(8) man page.

NUMA Configuration Information

NUMA Configuration Information

This section describes how to obtain statistics about your NUMA system.

Obtaining NUMA Statistics

Obtaining NUMA Statistics

This command checks for the presence of a NUMA system. If it finds a NUMA system, it also lists the number of nodes, the amount of memory, and the physical CPUs on the NUMA node.

Type the following:

cat /proc/vmware/NUMA/hardware

An example output is:

 System type : IBM x445-compatible
 
 # NUMA Nodes : 2
 
 
 Total memory : 8192 MB
 
 
 Node
 ID
 MachineMem
 ManagedMem
 CPUs
 0
 00
 4096 MB
 3257 MB
 0 1 2 3
 1
 01
 4096 MB
 4096 MB
 4 5 6 7

The absence of the /proc/vmware/NUMA directory indicates that this system is not a NUMA system.

The system type indicates the hardware for your NUMA system (in this case, an IBM x445 server). There are two NUMA nodes.

The fields in the table are defined as follows:

  • Node — Node number
  • ID — Hardware ID number of the NUMA node
  • MachineMem — Amount of physical memory located on this NUMA node, including memory that may be used by the service console.
  • ManagedMem — Amount of physical memory located on this NUMA node, excluding memory used by the service console and the ESX Server virtualization layer.
  • CPUs — A space-separated list of the physical processors in this node.

    Physical CPUs 0, 1, 2, and 3 are in NUMA node 0, and physical CPUs 4, 5, 6, and 7 are in NUMA node 1.

Total memory tells you how much memory is physically installed on each NUMA node. However not all of this memory may be managed by the VMkernel, as some of the memory is used by the service console.

Determining the Amount of Memory for each NUMA Node

Determining the Amount of Memory for each NUMA Node

Type the following:

cat /proc/vmware/mem/

An example output is:

.






.






.






Node

Total-/MB

FreeHi/MB

FreeLow/MB

Reserved/MB

Kernel/MB

0

836022/3265

98304/384

737528/2880

34574/135

190/0

1

2621440/10240

2601144/10160

0/0

0/0

20296/79

Totals


2699448/10544

737528/2880



In this preceding example, the total memory managed by the VMkernel for the NUMA nodes is listed in the Totals row. (This amount may be smaller than the total amount of physical memory on the server machine.

Determining the Amount of Memory for a Virtual Machine on a NUMA Node

Determining the Amount of Memory for a Virtual Machine on a NUMA Node

Type the following:

cat /proc/vmware/vm/<id>/mem/numa

An example output is:

 Node#
 Pages/MB
 0
 13250/51
 1
 0/0

The preceding output indicates that the virtual machine, with the specified ID, occupies 51MB of memory on node 0, and no memory on node 1.

Note: In this preceding example, the memory affinity is set so that only pages associated with node 0 are allocated for this virtual machine (sched.mem.affinity = 0). If memory affinity had not been set, then typically the output would have shown a more even distribution of memory between nodes 0 and 1. For more information, see Associating Future Virtual Machine Memory Allocations with a NUMA Node.

Automatic NUMA Optimizations

Automatic NUMA Optimizations

By default, ESX Server balances virtual machines and their related data between the available NUMA nodes. ESX Server attempts to maximize use of "local memory," that lies on the same NUMA node as the virtual machine that is running.

ESX Server automatically assigns each virtual machine to a temporary "home" NUMA node. The virtual machine only runs on CPUs in the home node, with access to its "local memory."

Periodically, ESX Server compares the utilization levels of all NUMA nodes and attempts to "rebalance" the nodes if one node has a higher utilization level than the other nodes. ESX Server rebalances the nodes by changing a virtual machine's "home" NUMA node from the overutilized node to an underutilized node.

When the NUMA nodes are balanced, ESX Server again attempts to maximize use of "local memory." For additional information on this process refer to the numa man page.

You may also set affinity manually as described in the next section. If you do so, then ESX Server won't automatically rebalance the nodes, and you must balance the NUMA nodes to avoid overloading any single node.

previous Prev   Contents   Last   Next next