To calculate util_avg, se's weight should have the same resolution as cfs->avg.load_avg. So use user weight instead.
Signed-off-by: T.Zhou <[email protected]> --- kernel/sched/fair.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 18d9e75..9799438 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -792,7 +792,8 @@ void post_init_entity_util_avg(struct sched_entity *se) if (cap > 0) { if (cfs_rq->avg.util_avg != 0) { - sa->util_avg = cfs_rq->avg.util_avg * se->load.weight; + sa->util_avg = cfs_rq->avg.util_avg * + scale_load_down(se->load.weight); sa->util_avg /= (cfs_rq->avg.load_avg + 1); if (sa->util_avg > cap) -- 2.7.3

