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?

Attachment: pgpPB5CFG75zo.pgp
Description: PGP signature

Reply via email to