Messages in this thread | | | Date | Wed, 24 Nov 2021 12:13:28 +0100 | From | Peter Zijlstra <> | 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.
| |