A community-oriented list of libraries, tools, and resources aimed to assist with NUMA-aware software development.
Non-Uniform Memory Access (NUMA) refers to multiprocessor systems whose memory is divided into multiple memory nodes.
To add, remove or change things on the list: please submit a pull request to the GitHub repository.
- libnuma - The libnuma shared library to control NUMA policy for processes or shared memory on Linux
- numa-rs - Rust bindings for libnuma
- go-numa - Go bindings for libnuma
- jnuma - Java bindings for libnuma
- py-numa - Python bindings for libnuma
- ocaml-numa - OCAML bindings for libnuma
- libNumaAPI - A cross-platform API wrapper for NUMA architecture
- hwloc - A portable API to detect and exploit the topology of parallel architectures
- Windows NUMA API - Official Microsoft Win32 NUMA API
- numactl - A program to run other programs with a specific NUMA policy
- numatool - A wrapper to linux kernels
move_pages
system call to balance processes' pages across NUMA nodes - libtorque - A threaded, continuations-based I/O event library for manycore NUMA machines
- pgasus - A C++ parallel programming framework for NUMA systems, based on PGAS semantics
- NUMASK - A skip list designed to exploit the characteristics of NUMA architectures to improve performance
- golang-numa - A golang utility library for NUMA-aware code
- NumaAllocator - A simple C++ header NUMA memory allocator
- numanji - A rustlang Local-affinity first NUMA-aware allocator with optional fallback
- Tesson - A tool for NUMA-aware sharding with Docker
- Umpire - An application-focused API for memory management on NUMA & GPU architectures
- memkind - A heap manager which enables control of memory characteristics and a partitioning of the heap between kinds of memory
- numastat - A program display NUMA allocation statistics
- NUMACC - A golang-based tool to check CPU affinity and NUMA configuration for containers and pods
- NumaTOP - An observation tool for runtime memory locality characterization and analysis of processes and threads running on a NUMA system
- SnuMAP - A NUMA performance profiler
- irqstat - A
/proc/interrupts
watcher designed for NUMA systems - Numa-Trace - A Pin tool to track NUMA memory accesses
- NUMAPROF - A NUMA memory profliler based on Pintool to track remote memory accesses
- Numalize - A memory tracing tool to detect communication and page usage of NUMA applications
- NumaMMA - A lightweight NUMA memory profiler/analyzer and a NUMA application execution engin
- numap - A Linux library for memory profiling based on hardware performance monitoring unit
- pcm-numa- A tool to monitor local and remote memory accesses on a NUMA system
- Comm|Scope - A NUMA-aware multi-CPU multi-GPU CUDA data transfer benchmarks
- Numafac - Scripts to calculate the NUMA factor of NUMA machines, based on the stream and lmbench3 benchmarks
- nurdma - Understanding RDMA behavior in NUMA systems
- numabench - A NUMA benchmarking tool
- numa-bench - A NUMA-aware memory allocation benchmark
- Skyhooks - An experimental NUMA-aware, lock-free heap memory allocator
- rw-numa-locks - A NUMA-aware reader-writer locks
- NUMA_Black-Box - Black-box concurrent data structures for NUMA architectures
This list was compiled by Domagoj Margan with help and resources from the systems community.