EMZETT.
Login

NUMA (non-uniform memory access)

In short: With NUMA (“non-uniform memory access”) each processor has its own nearby memory, and access to another processor’s memory takes longer.

In more detail: Servers with several processor sockets or many chiplets split RAM into regions (“nodes”). Access to the own node is fast, access to a foreign one slower and with less throughput.

In Depth

  • Contrast with UMA: There all memory accesses are equally fast, typical for desktop PCs with one processor.
  • Consequence for software: A thread running on node 0 that reads data on node 1 is slowed down.
  • Operating system: Linux by default allocates memory near the requesting core (“first touch”) and tries to keep processes on their node.
  • Tools: numactl --hardware lists the nodes, numactl --cpunodebind=0 --membind=0 program binds deliberately.
  • Databases and AI: Badly distributed load on multi-socket servers can cost throughput. Pinning and memory policies help.
  • Also on desktop CPUs: Some Ryzen Threadripper models behave similarly.

See also: memory hierarchy and cache lines