| Subject | Re: [RFC PATCH 04/14] sched: maintain the load contribution of blocked entities | From | Peter Zijlstra <> | Date | Thu, 16 Feb 2012 13:25:38 +0100 |
| |
On Wed, 2012-02-01 at 17:38 -0800, Paul Turner wrote: > +static inline void subtract_blocked_load_contrib(struct cfs_rq *cfs_rq, > + long load_contrib) > +{ > + if (likely(load_contrib < cfs_rq->blocked_load_avg)) > + cfs_rq->blocked_load_avg -= load_contrib; > + else > + cfs_rq->blocked_load_avg = 0; > +} > + > /* Update a sched_entity's runnable average */ > -static inline void update_entity_load_avg(struct sched_entity *se) > +static inline void update_entity_load_avg(struct sched_entity *se, > + int update_cfs_rq) > { > struct cfs_rq *cfs_rq = cfs_rq_of(se); > long contrib_delta; > @@ -1106,8 +1130,34 @@ static inline void update_entity_load_avg(struct sched_entity *se) > return; > > contrib_delta = __update_entity_load_avg_contrib(se); > + > + if (!update_cfs_rq) > + return; > + > if (se->on_rq) > cfs_rq->runnable_load_avg += contrib_delta; > + else > + subtract_blocked_load_contrib(cfs_rq, -contrib_delta); > +}
So that last bit is add_blocked_load_contrib(), right?
|