numad - Non-Uniform Memory Alignment Daemon
A user-level daemon that monitors NUMA topology and process resource consumption to facilitate good NUMA resource alignment of applications/virtual machines to improve performance and minimize cost of remote memory latencies.
- Name: [[User:billburnseh| Bill Burns]
- Email: firstname.lastname@example.org
- Targeted release: Fedora 17
- Last updated: 2012-01-13
- Percentage of completion: 25%
The daemon will attempt to match significant resource consumers with available memory and CPU resources in order to reduce cross node traffic. It will attempt to do some load balancing across NUMA nodes, and will provide a pre-placement advisory interface (to entities like libvirt), so significant processes can be pre-bound to nodes with sufficient available resources.
Benefit to Fedora
Fedora users will accrue performance benefits from automatic NUMA affinity grouping, without needing to explicitly place and bind processes themselves. This should improve the out-of-the-box performance experience on NUMA systems. With more and more systems, even at the low end, presenting NUMA topologies there is a real need to address the performance vagarities that such systems present.
The tool will be supplied in a new package, and will be a new, stand-alone daemon perhaps with an associated library. Wide spread system effects are unexpected. The daemon will discover the system NUMA topology and provide access to NUMA advice via command line and/or API to query for pre-placement, as well as do some load balancing of significant resource consuming processes directly via existing system interfaces. Some mechanisms for process participation election or exclusion will be provided.
How To Test
Basic function: Start significant workloads with long-running processes on a system with NUMA topology using no bindings and compare to the same when using binding indicated or automated by the daemon. Performance: Utilize the above with measurable workloads and compare the performance of the workloads.
The daemon can be disabled and manual determination of optimal NUMA assignement can be performed.
Documentation will be included as part of the package. A man page will describe the daemon and it's interfaces.