Messages in this thread | | | Date | Thu, 11 May 2017 08:59:05 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 1/3] sched/fair: Peter's shares_type patch |
| |
On Wed, May 10, 2017 at 06:07:14PM +0200, Vincent Guittot wrote: > On 10 May 2017 at 17:09, Tejun Heo <tj@kernel.org> wrote: > > Hello, Vincent. > > > > On Fri, May 05, 2017 at 11:30:31AM -0400, Tejun Heo wrote: > >> > For shares_runnable, it should be > >> > > >> > group_entity->runnable_load_avg = cfs_rq->runnable_load_avg * > >> > group_entity->avg.load_avg / cfs_rq->avg.load_avg > >> > >> Yeah, that could be one way to calculate the value while avoiding the > >> artifacts. Hmmm... IIUC, replacing the local contribution with the > >> current one is to ensure that we at least calculate with the current > >> term on the local queue. This makes sense for weight and shares but > >> as you pointed out it doesn't make sense to replace local base with > >> runnable when the base is expected to be sum of load_avgs. How about > >> something like the following? > > > > Vincent, have you given this patch a try? > > No I haven't. > My understand of Peter's feedback is that calc_cfs_shares should not > be the place where to implement calculation of > group_entity->runnable_load_avg and group_entity->avg.load_avg when > propagating
Right, so I have a pile of patches that implement all that my longish email outlined. I'm just chasing some strange behaviour; in particular I'm having runnable_load_avg > load_avg, which is something that should not happen.
It _looks_ like the add/sub cycle leaks a little and a lot of such cycles then push runnable_load_avg out. I've not managed to pin it down.
If I don't find it, I'll send it out regardless as an RFC so that others can 'enjoy'.
One request for Chris / Tejun, could you guys pretty please make a reproducible benchmark? Relying on some ill specified background noise just doesn't work, as this thread has clearly illustrated, nobody can reproduce your issue.
And although I think the specific issue has been fairly well explained, it would be good to have a working benchmark to prove the point.
| |