Glossary

The vocabulary of locality.

The NUMA terms that show up across the docs and notes, defined in one place.

NUMA
Non-Uniform Memory Access. On multi-socket servers, memory access latency depends on which CPU accesses which memory — local access is fast, remote (cross-node) access is typically 2–3× slower.
NUMA node
A grouping of CPUs and the memory attached to the same memory controller. Access within a node is local and fast; access to another node’s memory is remote.
Socket
A physical CPU package. On many servers each socket is its own NUMA node, though large CPUs can present multiple nodes per socket.
Local vs remote access
A memory access is local when the CPU and the memory are on the same NUMA node, and remote when they are on different nodes. Remote access crosses the interconnect and costs more latency and bandwidth.
Memory placement policy
A rule for which node(s) a region’s pages are allocated on. numaperf exposes Bind, Preferred, Interleave, and Local via MemPolicy.
First-touch
The kernel’s default placement heuristic: a page is placed on the node of the first CPU that writes it. Convenient, but rarely the node you want under load — which is why explicit policies exist.
Prefault
Faulting pages in ahead of the hot path. Prefault::Touch makes a placement decision stick at allocation time instead of drifting to wherever first-touch later lands.
Thread pinning / affinity
Constraining a thread to run on a specific set of CPUs. numaperf’s ScopedPin is a RAII pin that restores the previous affinity on drop.
Interleave
A placement policy that spreads a region’s pages round-robin across nodes. Useful for bandwidth-bound workloads that touch memory evenly rather than localising a hot buffer.
Work stealing
A scheduling technique where idle workers take tasks from busy ones. numaperf’s NumaExecutor restricts stealing to be node-scoped, so a steal does not silently make work remote.
Cache-line bouncing
Repeated invalidation of a shared cache line as multiple cores write it, forcing cross-core (and cross-node) traffic. ShardedCounter avoids it by keeping per-node state.
numastat
A Linux tool that reports per-node memory statistics (local vs remote hits/misses). Reading it honestly — alongside numaperf’s locality ratios — is how you confirm placement actually held.