Owner

Current status

Detailed Description

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.

Scope

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.

Dependencies

None.

Contingency Plan

The daemon can be disabled and manual determination of optimal NUMA assignement can be performed.

Documentation

Documentation will be included as part of the package. A man page will describe the daemon and it's interfaces.