Messages in this thread | | | Date | Tue, 29 Nov 2016 14:46:10 +0000 | From | Morten Rasmussen <> | Subject | Re: [PATCH 1/2 v2] sched: fix find_idlest_group for fork |
| |
On Tue, Nov 29, 2016 at 12:42:43PM +0100, Peter Zijlstra wrote: > On Tue, Nov 29, 2016 at 10:57:59AM +0000, Morten Rasmussen 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 > > :-( > > IIRC, and my pounding head really doesn't remember much, the comment > reads like we need the large fudge factor because hackbench. That is, > hackbench would like this test to go away, but others benchmarks will > tank.
Thanks, that seems in line with Vincent's reply.
The last bit that isn't clear to me is whether /512 is a 'large' fuzz factor. I guess it is, as we can have many wake-ups, i.e. many times avg_cost, over the period where avg_idle is calculated. No?
| |