Let the processes which lose they original cpus run on housekeeping cpus if they can to reduce disturbances on nohz_full cpus.
Cc: Thomas Gleixner <t...@linutronix.de> Cc: Christoph Lameter <c...@linux.com> Cc: Kevin Hilman <khil...@linaro.org> Cc: Mike Galbraith <bitbuc...@online.de> Cc: Viresh Kumar <viresh.ku...@linaro.org> Cc: Frederic Weisbecker <fweis...@gmail.com> Cc: Ingo Molnar <mi...@kernel.org> Cc: Peter Zijlstra <pet...@infradead.org> Signed-off-by: Lai Jiangshan <la...@cn.fujitsu.com> --- kernel/sched/core.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f0f831e..f9ef41a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1286,7 +1286,7 @@ static int select_fallback_rq(int cpu, struct task_struct *p) { int nid = cpu_to_node(cpu); const struct cpumask *nodemask = NULL; - enum { cpuset, possible, fail } state = cpuset; + enum { cpuset, housekeeping, possible, fail } state = cpuset; int dest_cpu; /* @@ -1322,8 +1322,15 @@ static int select_fallback_rq(int cpu, struct task_struct *p) case cpuset: /* No more Mr. Nice Guy. */ cpuset_cpus_allowed_fallback(p); + state = housekeeping; + break; + + case housekeeping: +#ifdef CONFIG_NO_HZ_FULL + do_set_cpus_allowed(p, housekeeping_mask); state = possible; break; +# endif /* CONFIG_NO_HZ_FULL. Fallthrough when !CONFIG_NO_HZ_FULL */ case possible: do_set_cpus_allowed(p, cpu_possible_mask); -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/