Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753251AbbDAJDf (ORCPT ); Wed, 1 Apr 2015 05:03:35 -0400 Received: from cn.fujitsu.com ([59.151.112.132]:25858 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1751740AbbDAJDc (ORCPT ); Wed, 1 Apr 2015 05:03:32 -0400 X-IronPort-AV: E=Sophos;i="5.04,848,1406563200"; d="scan'208";a="90021393" From: Lai Jiangshan To: CC: Lai Jiangshan , Thomas Gleixner , Christoph Lameter , Kevin Hilman , Mike Galbraith , Viresh Kumar , Frederic Weisbecker , Ingo Molnar , Peter Zijlstra , Ingo Molnar Subject: [PATCH] sched,nohz: fallback to housekeeping cpus before fallback to possible cpus Date: Wed, 1 Apr 2015 17:06:12 +0800 Message-ID: <1427879172-22711-1-git-send-email-laijs@cn.fujitsu.com> X-Mailer: git-send-email 2.1.0 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.167.226.103] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1752 Lines: 53 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 Cc: Christoph Lameter Cc: Kevin Hilman Cc: Mike Galbraith Cc: Viresh Kumar Cc: Frederic Weisbecker Cc: Ingo Molnar Cc: Peter Zijlstra Signed-off-by: Lai Jiangshan --- 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 majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/