Non-Uniform Memory Access (NUMA) Systems

In a NUMA system, the greater the distance between a processor and a memory bank, the slower the processor's access to that memory bank. Performance-sensitive applications should therefore be configured so that they allocate memory from the closest possible memory bank. 

Having a single process, the JVM, span multiple NUMA nodes could be detrimental to performance. This can be alleviated by having multiple, small JVM processes used on multiple NUMA node systems (as opposed to a single large process), with each JVM being restricted to a single NUMA node.

The command numactl (http://linux.die.net/man/8/numactl) can be used to view the available nodes on the system, as well as controlling to which nodes a process is allowed to run on.

Note:
  • NUMA systems and process allocation is unlikely to be an issue on most systems, but it is something to bear in mind when investigating performance issues
  • On Windows, this information and control is available through Task Manager. Right-clicking on a process allows you to control the affinity of the process, and also onto which logical processors and/or NUMA nodes the process can run.