From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932509AbbGJR2S (ORCPT ); Fri, 10 Jul 2015 13:28:18 -0400 Received: from e28smtp02.in.ibm.com ([122.248.162.2]:44786 "EHLO e28smtp02.in.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932426AbbGJR2I (ORCPT ); Fri, 10 Jul 2015 13:28:08 -0400 X-Helo: d28dlp02.in.ibm.com X-MailFrom: srikar@linux.vnet.ibm.com X-RcptTo: linux-kernel@vger.kernel.org Date: Fri, 10 Jul 2015 22:58:02 +0530 From: Srikar Dronamraju To: Ingo Molnar Cc: Rik van Riel , Peter Zijlstra , linux-kernel@vger.kernel.org, Mel Gorman Subject: Re: [PATCH] sched/numa: Restore sched feature NUMA to its earlier avatar. Message-ID: <20150710172802.GL26095@linux.vnet.ibm.com> Reply-To: Srikar Dronamraju References: <1436361633-4970-1-git-send-email-srikar@linux.vnet.ibm.com> <20150708135644.GC23380@gmail.com> <559D4128.2080606@redhat.com> <20150709062926.GA31232@gmail.com> <20150709065746.GE26095@linux.vnet.ibm.com> <20150709080151.GA31669@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <20150709080151.GA31669@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15071017-0005-0000-0000-000006535EED Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > > > Which in itself is confusing: WTH do we have a generic switch called 'NUMA' and > > > then have it disabled? > > > > NUMA feature gets enabled on multi-node boxes because of > > > > start_kernel() -> numa_policy_init() -> check_numabalancing_enable() -> > > set_numabalancing_state() -> sched_feat_set("NUMA"); > > Ugh, that is nonsensical! > > If CONFIG_SCHED_DEBUG is disabled then sched_features is a constant value: > > # define const_debug const > > ... > > extern const_debug unsigned int sysctl_sched_features; > > sched_features are _only_ meant for debugging. They turn into an unchangeable set > of features when SCHED_DEBUG is disabled - and that is very much by design. > > The whole set_numabalancing_state() muck needs to be fixed. Would something like the below suffice. If yes I can send out a formal patch for the same. Here we are moving numabalancing_enabled variable to common i.e for both CONFIG_SCHED_DEBUG and !CONFIG_SCHED_DEBUG. Also removing sched_feat_numa because its no more getting used. numabalancing_enabled is already being used similarly in task_tick_fair and task_numa_fault. -------------->8------------------------------------------------------8<-------------- kernel/sched/core.c | 5 +++-- kernel/sched/fair.c | 2 +- kernel/sched/sched.h | 6 ------ 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 78b4bad10..69ccbda4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2059,17 +2059,18 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) } #ifdef CONFIG_NUMA_BALANCING +__read_mostly bool numabalancing_enabled; + #ifdef CONFIG_SCHED_DEBUG void set_numabalancing_state(bool enabled) { + numabalancing_enabled = enabled; if (enabled) sched_feat_set("NUMA"); else sched_feat_set("NO_NUMA"); } #else -__read_mostly bool numabalancing_enabled; - void set_numabalancing_state(bool enabled) { numabalancing_enabled = enabled; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 587a2f6..1b86455 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5679,7 +5679,7 @@ static int migrate_degrades_locality(struct task_struct *p, struct lb_env *env) if (!p->numa_faults || !(env->sd->flags & SD_NUMA)) return -1; - if (!sched_feat(NUMA)) + if (!numabalancing_enabled) return -1; src_nid = cpu_to_node(env->src_cpu); diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 84d4879..d460fe3 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1014,14 +1014,8 @@ extern struct static_key sched_feat_keys[__SCHED_FEAT_NR]; #endif /* SCHED_DEBUG && HAVE_JUMP_LABEL */ #ifdef CONFIG_NUMA_BALANCING -#define sched_feat_numa(x) sched_feat(x) -#ifdef CONFIG_SCHED_DEBUG -#define numabalancing_enabled sched_feat_numa(NUMA) -#else extern bool numabalancing_enabled; -#endif /* CONFIG_SCHED_DEBUG */ #else -#define sched_feat_numa(x) (0) #define numabalancing_enabled (0) #endif /* CONFIG_NUMA_BALANCING */ -- Thanks and Regards Srikar Dronamraju