Jiri Slaby 4505d7
From: Rik van Riel <riel@redhat.com>
Jiri Slaby 4505d7
Date: Fri, 23 Jun 2017 12:55:27 -0400
Jiri Slaby 4505d7
Subject: [PATCH] sched/numa: Override part of migrate_degrades_locality() when
Jiri Slaby 4505d7
 idle balancing
Jiri Slaby 4505d7
References: bnc#1060662
Thomas Zimmermann 1d81d2
Patch-mainline: v4.12.1
Jiri Slaby 4505d7
Git-commit: 739294fb03f590401bbd7faa6d31a507e3ffada5
Jiri Slaby 4505d7
Jiri Slaby 4505d7
commit 739294fb03f590401bbd7faa6d31a507e3ffada5 upstream.
Jiri Slaby 4505d7
Jiri Slaby 4505d7
Several tests in the NAS benchmark seem to run a lot slower with
Jiri Slaby 4505d7
NUMA balancing enabled, than with NUMA balancing disabled. The
Jiri Slaby 4505d7
slower run time corresponds with increased idle time.
Jiri Slaby 4505d7
Jiri Slaby 4505d7
Overriding the final test of migrate_degrades_locality (but still
Jiri Slaby 4505d7
doing the other NUMA tests first) seems to improve performance
Jiri Slaby 4505d7
of those benchmarks.
Jiri Slaby 4505d7
Jiri Slaby 4505d7
Reported-by: Jirka Hladky <jhladky@redhat.com>
Jiri Slaby 4505d7
Signed-off-by: Rik van Riel <riel@redhat.com>
Jiri Slaby 4505d7
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Jiri Slaby 4505d7
Cc: Mel Gorman <mgorman@suse.de>
Jiri Slaby 4505d7
Cc: Mike Galbraith <efault@gmx.de>
Jiri Slaby 4505d7
Cc: Peter Zijlstra <peterz@infradead.org>
Jiri Slaby 4505d7
Cc: Thomas Gleixner <tglx@linutronix.de>
Jiri Slaby 4505d7
Cc: linux-kernel@vger.kernel.org
Jiri Slaby 4505d7
Link: http://lkml.kernel.org/r/20170623165530.22514-2-riel@redhat.com
Jiri Slaby 4505d7
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Jiri Slaby 4505d7
Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Jiri Slaby 4505d7
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Jiri Slaby 4505d7
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby 4505d7
---
Jiri Slaby 4505d7
 kernel/sched/fair.c | 4 ++++
Jiri Slaby 4505d7
 1 file changed, 4 insertions(+)
Jiri Slaby 4505d7
Jiri Slaby 4505d7
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
Jiri Slaby 4505d7
index 2c89ad8a3eba..58f2228f4820 100644
Jiri Slaby 4505d7
--- a/kernel/sched/fair.c
Jiri Slaby 4505d7
+++ b/kernel/sched/fair.c
Jiri Slaby 4505d7
@@ -6661,6 +6661,10 @@ static int migrate_degrades_locality(struct task_struct *p, struct lb_env *env)
Jiri Slaby 4505d7
 	if (dst_nid == p->numa_preferred_nid)
Jiri Slaby 4505d7
 		return 0;
Jiri Slaby 4505d7
 
Jiri Slaby 4505d7
+	/* Leaving a core idle is often worse than degrading locality. */
Jiri Slaby 4505d7
+	if (env->idle != CPU_NOT_IDLE)
Jiri Slaby 4505d7
+		return -1;
Jiri Slaby 4505d7
+
Jiri Slaby 4505d7
 	if (numa_group) {
Jiri Slaby 4505d7
 		src_faults = group_faults(p, src_nid);
Jiri Slaby 4505d7
 		dst_faults = group_faults(p, dst_nid);
Jiri Slaby 4505d7
-- 
Jiri Slaby 4505d7
2.14.2
Jiri Slaby 4505d7