aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/fork.c
diff options
context:
space:
mode:
authorMel Gorman <mgorman@suse.de>2012-11-22 09:40:03 -0500
committerMel Gorman <mgorman@suse.de>2012-12-11 09:42:56 -0500
commit5bca23035391928c4c7301835accca3551b96cc2 (patch)
tree2feb63abf318e6edfded8bb97b43ca29c3c5b312 /kernel/fork.c
parent3105b86a9fee7d2c2e76edb53bbbc4027599628f (diff)
mm: sched: numa: Delay PTE scanning until a task is scheduled on a new node
Due to the fact that migrations are driven by the CPU a task is running on there is no point tracking NUMA faults until one task runs on a new node. This patch tracks the first node used by an address space. Until it changes, PTE scanning is disabled and no NUMA hinting faults are trapped. This should help workloads that are short-lived, do not care about NUMA placement or have bound themselves to a single node. This takes advantage of the logic in "mm: sched: numa: Implement slow start for working set sampling" to delay when the checks are made. This will take advantage of processes that set their CPU and node bindings early in their lifetime. It will also potentially allow any initial load balancing to take place. Signed-off-by: Mel Gorman <mgorman@suse.de>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r--kernel/fork.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 8b20ab7d3aa2..296ea308096d 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -821,6 +821,9 @@ struct mm_struct *dup_mm(struct task_struct *tsk)
821#ifdef CONFIG_TRANSPARENT_HUGEPAGE 821#ifdef CONFIG_TRANSPARENT_HUGEPAGE
822 mm->pmd_huge_pte = NULL; 822 mm->pmd_huge_pte = NULL;
823#endif 823#endif
824#ifdef CONFIG_NUMA_BALANCING
825 mm->first_nid = NUMA_PTE_SCAN_INIT;
826#endif
824 if (!mm_init(mm, tsk)) 827 if (!mm_init(mm, tsk))
825 goto fail_nomem; 828 goto fail_nomem;
826 829