Re: [PATCH 1/2 v2] sched: fix find_idlest_group for fork

From: Morten Rasmussen
Date: Tue Nov 29 2016 - 09:51:00 EST


On Tue, Nov 29, 2016 at 02:04:27PM +0100, Vincent Guittot wrote:
> On 29 November 2016 at 11:57, Morten Rasmussen <morten.rasmussen@xxxxxxx> wrote:
> > On Fri, Nov 25, 2016 at 04:34:32PM +0100, Vincent Guittot wrote:
> >> @@ -5708,13 +5708,6 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t
> >>
> >> avg_cost = this_sd->avg_scan_cost;
> >>
> >> - /*
> >> - * Due to large variance we need a large fuzz factor; hackbench in
> >> - * particularly is sensitive here.
> >> - */
> >> - if ((avg_idle / 512) < avg_cost)
> >> - return -1;
> >> -
> >> time = local_clock();
> >>
> >> for_each_cpu_wrap(cpu, sched_domain_span(sd), target, wrap) {
> >
> > I don't quite get this fix, but it is very likely because I haven't paid
> > enough attention.
> >
> > Are you saying that removing the avg_cost check is improving hackbench
> > performance? I thought it was supposed to help hackbench? I'm confused
> > :-(
>
> Yes, avg_cost check prevents some tasks migration at the end of the
> tests when some threads have already finished their loop letting some
> CPUs idle whereas others threads are still competing on the same CPUS

Okay, thanks.

> > Should we do the same for SD_BALANCE_EXEC?
>
> I asked myself if i should add SD_BALANCE_EXEC but decided to only
> keep SD_BALANCE_FORK for now as no regression has been raised for now.

Fair enough.

FWIW, with the label renaming suggested by mfleming, you can add my
reviewed/acked-by if you like.

Morten