]> git.karo-electronics.de Git - karo-tx-linux.git/commit
sched, numa, mm: Add fault driven placement and migration policy
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Tue, 9 Oct 2012 11:46:22 +0000 (13:46 +0200)
committerIngo Molnar <mingo@kernel.org>
Sun, 28 Oct 2012 16:31:15 +0000 (17:31 +0100)
commitf7a688de2312e39cb456df3844f3996cc8c8ba5d
tree8dfeb8567afabea29828390fbd7b595898f0ce45
parentf9848081ba2cf98628df165cc2784c32fe9fc9e2
sched, numa, mm: Add fault driven placement and migration policy

As per the problem/design document Documentation/scheduler/numa-problem.txt
implement 3ac & 4.

( A pure 3a was found too unstable, I did briefly try 3bc
  but found no significant improvement. )

Implement a per-task memory placement scheme relying on a regular
PROT_NONE 'migration' fault to scan the memory space of the procress
and uses a two stage migration scheme to reduce the invluence of
unlikely usage relations.

It relies on the assumption that the compute part is tied to a
paticular task and builds a task<->page relation set to model the
compute<->data relation.

In the previous patch we made memory migrate towards where the task
is running, here we select the node on which most memory is located
as the preferred node to run on.

This creates a feed-back control loop between trying to schedule a
task on a node and migrating memory towards the node the task is
scheduled on.

Suggested-by: Andrea Arcangeli <aarcange@redhat.com>
Suggested-by: Rik van Riel <riel@redhat.com>
Fixes-by: David Rientjes <rientjes@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-8ejt0ioj62k5ruf5zd2ix9zu@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/linux/mm_types.h
include/linux/sched.h
kernel/sched/core.c
kernel/sched/fair.c
kernel/sched/features.h
kernel/sched/sched.h
kernel/sysctl.c
mm/huge_memory.c
mm/memory.c