[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YZ4eWHarf7QDONLB@hirez.programming.kicks-ass.net>
Date: Wed, 24 Nov 2021 12:13:28 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Barry Song <21cnbao@...il.com>
Cc: mingo@...hat.com, juri.lelli@...hat.com,
vincent.guittot@...aro.org, rostedt@...dmis.org,
linux-kernel@...r.kernel.org, dietmar.eggemann@....com,
bsegall@...gle.com, mgorman@...e.de, bristot@...hat.com,
Barry Song <song.bao.hua@...ilicon.com>
Subject: Re: [PATCH v2] sched/fair: Remove the cost of a redundant
cpumask_next_wrap in select_idle_cpu
On Wed, Nov 24, 2021 at 05:15:46PM +0800, Barry Song wrote:
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 6e476f6..8cd23f1 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -6278,6 +6278,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, bool
> time = cpu_clock(this);
> }
>
> + --nr;
> for_each_cpu_wrap(cpu, cpus, target + 1) {
> if (has_idle_core) {
> i = select_idle_core(p, cpu, cpus, &idle_cpu);
> @@ -6285,11 +6286,11 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, bool
> return i;
>
> } else {
> - if (!--nr)
> - return -1;
> idle_cpu = __select_idle_cpu(cpu, p);
> if ((unsigned int)idle_cpu < nr_cpumask_bits)
> break;
> + if (!--nr)
> + return -1;
> }
> }
This way nr can never be 1 for a single iteration -- it current isn't,
but that's besides the point.
Powered by blists - more mailing lists