On Mon, 2015-10-12 at 10:12 +0800, Yuyang Du wrote:

> I am guessing it is in calc_tg_weight(), and naughty boys do make them more
> favored, what a reality...
> 
> Mike, beg you test the following?

Wow, that was quick.  Dinky patch made it all better.

 
-----------------------------------------------------------------------------------------------------------------
  Task                  |   Runtime ms  | Switches | Average delay ms | Maximum 
delay ms | Maximum delay at       |
 
-----------------------------------------------------------------------------------------------------------------
  oink:(8)              | 739056.970 ms |    27270 | avg:    2.043 ms | max:   
29.105 ms | max at:    339.988310 s
  mplayer:(25)          |  36448.997 ms |    44670 | avg:    1.886 ms | max:   
72.808 ms | max at:    302.153121 s
  Xorg:988              |  13334.908 ms |    22210 | avg:    0.081 ms | max:   
25.005 ms | max at:    269.068666 s
  testo:(9)             |   2558.540 ms |    13703 | avg:    0.124 ms | max:    
6.412 ms | max at:    279.235272 s
  konsole:1781          |   1084.316 ms |     1457 | avg:    0.006 ms | max:    
1.039 ms | max at:    268.863379 s
  kwin:1734             |    879.645 ms |    17855 | avg:    0.458 ms | max:   
15.788 ms | max at:    268.854992 s
  pulseaudio:1808       |    356.334 ms |    15023 | avg:    0.028 ms | max:    
6.134 ms | max at:    324.479766 s
  threaded-ml:3483      |    292.782 ms |    25769 | avg:    0.364 ms | max:   
40.387 ms | max at:    294.550515 s
  plasma-desktop:1745   |    265.055 ms |     1470 | avg:    0.102 ms | max:   
21.886 ms | max at:    267.724902 s
  perf:3439             |     61.677 ms |        2 | avg:    0.117 ms | max:    
0.232 ms | max at:    367.043889 s


> --
> 
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 4df37a4..b184da0 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -2370,7 +2370,7 @@ static inline long calc_tg_weight(struct task_group 
> *tg, struct cfs_rq *cfs_rq)
>        */
>       tg_weight = atomic_long_read(&tg->load_avg);
>       tg_weight -= cfs_rq->tg_load_avg_contrib;
> -     tg_weight += cfs_rq_load_avg(cfs_rq);
> +     tg_weight += cfs_rq->load.weight;
>  
>       return tg_weight;
>  }
> @@ -2380,7 +2380,7 @@ static long calc_cfs_shares(struct cfs_rq *cfs_rq, 
> struct task_group *tg)
>       long tg_weight, load, shares;
>  
>       tg_weight = calc_tg_weight(tg, cfs_rq);
> -     load = cfs_rq_load_avg(cfs_rq);
> +     load = cfs_rq->load.weight;
>  
>       shares = (tg->shares * load);
>       if (tg_weight)


--
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/

Reply via email to