Messages in this thread Patch in this message | | | Date | Mon, 28 Jul 2014 14:01:25 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 2/2 v4] sched: Rewrite per entity runnable load average tracking |
| |
On Fri, Jul 18, 2014 at 07:26:06AM +0800, Yuyang Du wrote: > -static void update_cfs_rq_blocked_load(struct cfs_rq *cfs_rq, int force_update) > +/* Add the load generated by se into cfs_rq's load average */ > +static inline void enqueue_entity_load_avg(struct sched_entity *se) > { > + struct sched_avg *sa = &se->avg; > + struct cfs_rq *cfs_rq = cfs_rq_of(se); > + u64 now = cfs_rq_clock_task(cfs_rq); > + int migrated = 0, decayed; > > + if (sa->last_update_time == 0) { > + sa->last_update_time = now; > > + if (entity_is_task(se)) > + migrated = 1; > } > + else > + __update_load_avg(now, sa, se->on_rq * se->load.weight);
That's a coding style fail, that should look like:
if () { } else { }
> > + decayed = update_cfs_rq_load_avg(now, cfs_rq); > > + if (migrated) { > + cfs_rq->avg.load_avg += sa->load_avg; > + cfs_rq->avg.load_sum += sa->load_sum; > } > > + if (decayed || migrated) > + update_tg_load_avg(cfs_rq); > }
> @@ -2764,7 +2595,7 @@ enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) > * Update run-time statistics of the 'current'. > */ > update_curr(cfs_rq); > - enqueue_entity_load_avg(cfs_rq, se, flags & ENQUEUE_WAKEUP); > + enqueue_entity_load_avg(se); > account_entity_enqueue(cfs_rq, se); > update_cfs_shares(cfs_rq); >
Why did you remove the cfs_rq argumetn only to have to re-compute it? [unhandled content-type:application/pgp-signature] | |