Automatic NUMA CPU Scheduling and Memory Migration

Registered by Amit Shah on 2012-08-28

The Linux Kernel is already very NUMA aware and NUMA capable in terms
of hard NUMA bindings. For example, it is relatively easy to bind an
application or small virtual machine to a single NUMA node. However,
hard bindings are not set up automatically by the kernel. The
administrator might not know enough to set up the hard bindings, might
do them in a non-optimal way or might not re-do them when the system
workload changes significantly. Incorrect NUMA bindings (of none at
all) can result in a significant performance hit.

Userland NUMA job managers exist, for example numad, and they can be
used to automatically move processes to different NUMA nodes. But,
those job managers have limits on how well they can optimize certain
workloads. Such difficult workloads include processes that span across
more than one NUMA node or many virtual machines that overcommit the
host's CPU resources.

The objective of AutoNUMA is to avoid the need for the administrator
to set up hard bindings and to solve the more difficult problems faced
by the userland NUMA job managers, while achieving optimal performance
on NUMA systems for all types of workloads. The Linux Kernel, when
AutoNUMA is enabled, is capable of reaching NUMA convergence
dynamically and incrementally based on the current load, in turn
handling NUMA placements automatically.

Andrea Arcangeli joined Qumranet and then Red Hat in 2008 because of
his interest in working on the KVM virtualization project, with a
special interest in virtual machine memory management. Before joining
Qumranet, he worked for Novel/SUSE for 9 years. He worked on many
parts of the Linux Kernel, but specialized on the virtual memory
subsystem. Andrea starting working with Linux in his spare time
shortly after first connecting to the internet back in 1996 while
studying at Bologna University. He enjoys spending most of his time
solving software problems - "big and small" - and promoting the
adoption of Linux and Open Source software everywhere.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
Amit Shah
Definition:
Approved
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.