All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Bing Huang <huangbing@kylinos.cn>
Cc: mingo@redhat.com, juri.lelli@redhat.com,
	vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
	rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
	bristot@redhat.com, brauner@kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] sche/fair: static cpumasks for load balance
Date: Wed, 25 May 2022 19:04:34 +0200	[thread overview]
Message-ID: <20220525170434.GK2578@worktop.programming.kicks-ass.net> (raw)
In-Reply-To: <20220523094216.1746504-1-huangbing@kylinos.cn>

On Mon, May 23, 2022 at 05:42:16PM +0800, Bing Huang wrote:
> The both cpu mask load_balance_mask and select_idle_mask just only used
> in fair.c, but allocation in core.c in CONFIG_CPUMASK_OFFSTACK=y case,
> and global via declare per cpu variations. More or less, it looks wired.
> 
> Signed-off-by: Bing Huang <huangbing@kylinos.cn>
> ---
>  kernel/sched/core.c  | 13 +++----------
>  kernel/sched/fair.c  | 18 ++++++++++++++++--
>  kernel/sched/sched.h |  4 ++++
>  3 files changed, 23 insertions(+), 12 deletions(-)
> 
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index d58c0389eb23..64934c5e236d 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -9448,9 +9448,6 @@ LIST_HEAD(task_groups);
>  static struct kmem_cache *task_group_cache __read_mostly;
>  #endif
>  
> -DECLARE_PER_CPU(cpumask_var_t, load_balance_mask);
> -DECLARE_PER_CPU(cpumask_var_t, select_idle_mask);
> -
>  void __init sched_init(void)
>  {
>  	unsigned long ptr = 0;
> @@ -9494,14 +9491,10 @@ void __init sched_init(void)
>  
>  #endif /* CONFIG_RT_GROUP_SCHED */
>  	}
> +
>  #ifdef CONFIG_CPUMASK_OFFSTACK
> -	for_each_possible_cpu(i) {
> -		per_cpu(load_balance_mask, i) = (cpumask_var_t)kzalloc_node(
> -			cpumask_size(), GFP_KERNEL, cpu_to_node(i));
> -		per_cpu(select_idle_mask, i) = (cpumask_var_t)kzalloc_node(
> -			cpumask_size(), GFP_KERNEL, cpu_to_node(i));
> -	}
> -#endif /* CONFIG_CPUMASK_OFFSTACK */
> +	init_working_cpumask();
> +#endif

We already have init_sched_fair_class(), can't you use that?

>  
>  	init_rt_bandwidth(&def_rt_bandwidth, global_rt_period(), global_rt_runtime());
>  
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index a68482d66535..3a4b0dd1beb5 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -5831,8 +5831,8 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
>  #ifdef CONFIG_SMP
>  
>  /* Working cpumask for: load_balance, load_balance_newidle. */
> -DEFINE_PER_CPU(cpumask_var_t, load_balance_mask);
> -DEFINE_PER_CPU(cpumask_var_t, select_idle_mask);
> +static DEFINE_PER_CPU(cpumask_var_t, load_balance_mask);
> +static DEFINE_PER_CPU(cpumask_var_t, select_idle_mask);
>  
>  #ifdef CONFIG_NO_HZ_COMMON
>  
> @@ -7052,6 +7052,20 @@ balance_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
>  }
>  #endif /* CONFIG_SMP */
>  
> +#ifdef CONFIG_CPUMASK_OFFSTACK
> +void __init init_working_cpumask(void)
> +{
> +	int i;
> +
> +	for_each_possible_cpu(i) {
> +		per_cpu(load_balance_mask, i) = (cpumask_var_t)kzalloc_node(
> +				cpumask_size(), GFP_KERNEL, cpu_to_node(i));
> +		per_cpu(select_idle_mask, i) = (cpumask_var_t)kzalloc_node(
> +				cpumask_size(), GFP_KERNEL, cpu_to_node(i));
> +	}
> +}
> +#endif

If you stick that #ifdef inside the function, you can remove it
everwhere else. Less #ifdef is more better.

  reply	other threads:[~2022-05-25 17:05 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-23  9:42 [PATCH] sche/fair: static cpumasks for load balance Bing Huang
2022-05-25 17:04 ` Peter Zijlstra [this message]
2022-05-26  8:32   ` huangbing

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220525170434.GK2578@worktop.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=brauner@kernel.org \
    --cc=bristot@redhat.com \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=huangbing@kylinos.cn \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=vincent.guittot@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.