About
A small, opinionated set of NUMA primitives for Rust.
numaperf is a project of Skelf Research. It treats NUMA as a first-class concern, not a footnote in your allocator’s release notes.
What we believe
On multi-socket servers, memory access latency varies by 2–3× depending on which CPU accesses which memory. Most applications ignore this — and most of the time it costs them a long tail. We think the right response is not heroics in the scheduler, but explicit, observable placement at the application layer.
The three primitives that matter, in our reading, are:
- Where the data lives. Memory placement policies that the developer chose, not the kernel’s first-touch heuristic.
- Where the work runs. RAII-scoped affinity that survives refactors and worker-pool transitions.
- What you can measure. Locality ratios and cross-node traffic counters, reported in numbers you can put on a dashboard.
What numaperf is not
It is not a general-purpose async runtime. It is not a drop-in replacement for Tokio or async-std. It is not a NUMA-aware allocator — though it composes with one. It does not try to make Windows happy. It is a focused set of crates you can adopt incrementally.
Scope and status
numaperf targets Linux x86_64 and aarch64, with graceful degradation on macOS where the
hardware does not present NUMA. Minimum supported Rust version is 1.70. The workspace is organised as a
facade crate (numaperf) plus seven focused crates you can pull in individually.
Project
License
MIT. See the LICENSE file.
Contact
For support, write to support@skelfresearch.com, or open an issue on GitHub if it is reproducible.