Message ID | bfd56e897b3b668acf794e566067c2e6477f732d.1477072182.git.joseph.salisbury@canonical.com |
---|---|
State | New |
Headers | show |
I'd kind of like to see this one get upstream first as it could have wide ranging impact. rtg
On 10/26/2016 12:20 PM, Tim Gardner wrote: > I'd kind of like to see this one get upstream first as it could have > wide ranging impact. > > rtg I'll follow this upstream and send an update when it lands. Thanks for the feedback, Tim. Joe
On 10/26/2016 12:20 PM, Tim Gardner wrote: > I'd kind of like to see this one get upstream first as it could have > wide ranging impact. > > rtg I just checked and the commit landed upstream in 4.9-rc2 as commit: commit b5a9b340789b2b24c6896bcf7a065c31a4db671c Author: Vincent Guittot <vincent.guittot@linaro.org> Date: Wed Oct 19 14:45:23 2016 +0200 sched/fair: Fix incorrect task group ->load_avg Greg has also queued the commit for upstream 4.8 stable: "This is a note to let you know that I've just added the patch titled sched/fair: Fix incorrect task group ->load_avg to the 4.8-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: sched-fair-fix-incorrect-task-group-load_avg.patch and it can be found in the queue-4.8 subdirectory."
Seems like a no brainer
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 039de34..9e40cd4 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -680,7 +680,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 task until + * they get a chance to stabilize to their real load level. + * group entity are intialized with null load to reflect the fact that + * nothing has been attached yet to the task group. + */ + 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