Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933045AbbDISCN (ORCPT ); Thu, 9 Apr 2015 14:02:13 -0400 Received: from mail-db3on0094.outbound.protection.outlook.com ([157.55.234.94]:38016 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932939AbbDISCJ (ORCPT ); Thu, 9 Apr 2015 14:02:09 -0400 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; ezchip.com; dkim=none (message not signed) header.d=none; From: Chris Metcalf To: "Peter Zijlstra (Intel)" , Frederic Weisbecker , "Paul E. McKenney" , "Rafael J. Wysocki" , Martin Schwidefsky , Ingo Molnar , CC: Chris Metcalf Subject: [PATCH v6 2/2] nohz: set isolcpus when nohz_full is set Date: Thu, 9 Apr 2015 14:01:46 -0400 Message-ID: <1428602506-16753-2-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1428602506-16753-1-git-send-email-cmetcalf@ezchip.com> References: <20150409174218.GT21418@twins.programming.kicks-ass.net> <1428602506-16753-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;BMV:1;SFV:NSPM;SFS:(10009020)(6009001)(339900001)(189002)(54534003)(199003)(575784001)(104016003)(2950100001)(87936001)(50226001)(86362001)(92566002)(33646002)(76176999)(85426001)(6806004)(19580395003)(42186005)(48376002)(47776003)(229853001)(106466001)(50986999)(50466002)(105606002)(62966003)(77156002)(46102003)(36756003)(561944003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR02MB0782;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;MLV:sfv;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0782; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5002010)(5005006);SRVR:VI1PR02MB0782;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0782; X-Forefront-PRVS: 0541031FF6 X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2015 18:02:04.7470 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR02MB0782 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2066 Lines: 54 nohz_full is only useful with isolcpus also set, since otherwise the scheduler has to run periodically to try to determine whether to steal work from other cores. Accordingly, when booting with nohz_full=xxx on the command line, we should act as if isolcpus=xxx was also set, and set (or extend) the isolcpus set to include the nohz_full cpus. Signed-off-by: Chris Metcalf --- I've come full circle on this issue. For v5 I liked Frederic's idea of adding an API, but the more I thought about it seemed like an overly-generic mechanism for what is really a very specific issue, namely the interaction between the scheduler and nohz_full. We already have plenty of nohz_full-specific code in sched/core.c, and I think we now have a cpumask function name that is OK, so now I'm proposing we just stick with directly modifying the cpu_isolated_map using the new name. However, I've moved the update to the map right to the top of sched_init_smp(), which seems like a cleaner place to make this kind of a change. v6: back to just using a direct update, with the new names v5: test run of Frederic's proposal to use sched_isolated_map_add() v4: update accessor names to make them clearer [PeterZ] v3: update changelog language to avoid using unclear "implies" [PeterZ] kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f0f831e8a345..041845c568d2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7031,6 +7031,9 @@ void __init sched_init_smp(void) alloc_cpumask_var(&non_isolated_cpus, GFP_KERNEL); alloc_cpumask_var(&fallback_doms, GFP_KERNEL); + /* nohz_full won't take effect without isolating the cpus. */ + tick_nohz_full_remove_cpus_from(cpu_isolated_map); + sched_init_numa(); /* -- 2.1.2 -- 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/