Hello, Vincent. On Wed, Apr 26, 2017 at 06:14:17PM +0200, Vincent Guittot wrote: > > + if (gcfs_rq->load.weight) { > > + long shares = calc_cfs_shares(gcfs_rq, gcfs_rq->tg); > > > > + load = min(gcfs_rq->runnable_load_avg * > > + shares / gcfs_rq->load.weight, shares); > > There is a unit problem above: > runnable_load_avg and shares are not in the same range but > runnable_load_avg and scale_load_down(gcfs_rq->load.weight) are so > you should use > gcfs_rq->runnable_load_avg * scale_load_down(shares) / > scale_load_down(gcfs_rq->load.weight).
But the only difference there is that we lose accuracy in calculation; otherwise, the end results are the same, no? > Hopefully both scale_load_down cancel between them > But the min should be then tested with scale_load_down(shares) and not > only shares Ah, that's right. The min should be against scaled down shares. Thanks. -- tejun