On Mon, Oct 12, 2015 at 01:47:23PM +0200, Peter Zijlstra wrote: > > Also, should we do the below? At this point se->on_rq is still 0 so > reweight_entity() will not update (dequeue/enqueue) the accounting, but > we'll have just accounted the 'old' load.weight. > > Doing it this way around we'll first update the weight and then account > it, which seems more accurate. I think the original looks ok.
The account_entity_enqueue() adds child entity's load.weight to parent's load: update_load_add(&cfs_rq->load, se->load.weight) Then recalculate the shares. Then reweight_entity() resets the parent entity's load.weight. > --- > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 700eb548315f..d2efef565aed 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -3009,8 +3009,8 @@ enqueue_entity(struct cfs_rq *cfs_rq, struct > sched_entity *se, int flags) > */ > update_curr(cfs_rq); > enqueue_entity_load_avg(cfs_rq, se); > - account_entity_enqueue(cfs_rq, se); > update_cfs_shares(cfs_rq); > + account_entity_enqueue(cfs_rq, se); > > if (flags & ENQUEUE_WAKEUP) { > place_entity(cfs_rq, se, 0); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/