scheduler fix
Linus,
Please pull the latest sched-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-urgent-for-linus
# HEAD: b5a9b340789b2b24c6896bcf7a065c31a4db671c sched/fair: Fix incorrect task group ->load_avg
This fixes a group scheduling related performance/interactivity regression introduced in v4.8, which affects certain hardware environments where cpu_possible_mask != cpu_present_mask.
Thanks,
Ingo
------------------>
Vincent Guittot (1):
sched/fair: Fix incorrect task group ->load_avg
kernel/sched/fair.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
kernel/sched/fair.c +8 -1
@@ -690,7 +690,14 @@ void init_entity_runnable_average(struct sched_entity *se)* will definitely be update (after enqueue). */ sa->period_contrib =1023 ; - sa->load_avg =scale_load_down (se->load.weight); +/* +* Tasks are intialized with full load to be seen as heavy tasks until +* they get a chance to stabilize to their real load level. +* Group entities are intialized with zero load to reflect the fact that +* nothing has been attached to the task group yet. +*/ +if (entity_is_task (se)) + sa->load_avg =scale_load_down (se->load.weight); sa->load_sum = sa->load_avg *LOAD_AVG_MAX ;/* * At this point, util_avg won't be used in select_task_rq_fair anyway