NUMA
also: Non-Uniform Memory Access
NUMA (Non-Uniform Memory Access) is a computer architecture where multiple processors have memory banks attached locally, with faster access to their own memory and slower access to remote memory banks on other processors.
NUMA divides a system's RAM into local and remote regions based on which CPU socket controls access. Each processor has its own memory bank nearby (low latency) and can access other processors' memory more slowly (high latency).
This contrasts with older UMA (Uniform Memory Access) systems where all CPUs access all memory at the same speed. NUMA systems scale better to many processors but require careful optimization.
A modern dual-socket server might have CPU 0 with 64GB of local RAM (latency ~50ns) and CPU 1 with its own 64GB (latency ~50ns to CPU 1). If CPU 0 accesses CPU 1's memory, latency increases to ~300ns. The numactl and numastat tools help manage NUMA locality.
Properly tuned applications pin processes to specific NUMA nodes and allocate memory locally, avoiding the performance penalty of remote access. Databases and virtualization platforms often optimize for NUMA.