Messages in this thread | | | From | Vincent Guittot <> | Date | Thu, 25 Jun 2020 11:56:32 +0200 | Subject | Re: [PATCH] sched/cfs: change initial value of runnable_avg |
| |
On Thu, 25 Jun 2020 at 11:24, Holger Hoffstätte <holger@applied-asynchrony.com> wrote: > > On 2020-06-24 17:44, Vincent Guittot wrote: > > Some performance regression on reaim benchmark have been raised with > > commit 070f5e860ee2 ("sched/fair: Take into account runnable_avg to classify group") > > > > The problem comes from the init value of runnable_avg which is initialized > > with max value. This can be a problem if the newly forked task is finally > > a short task because the group of CPUs is wrongly set to overloaded and > > tasks are pulled less agressively. > > > > Set initial value of runnable_avg equals to util_avg to reflect that there > > is no waiting time so far. > > > > Fixes: 070f5e860ee2 ("sched/fair: Take into account runnable_avg to classify group") > > Reported-by: kernel test robot <rong.a.chen@intel.com> > > Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> > > --- > > kernel/sched/fair.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > > index 0424a0af5f87..45e467bf42fc 100644 > > --- a/kernel/sched/fair.c > > +++ b/kernel/sched/fair.c > > @@ -806,7 +806,7 @@ void post_init_entity_util_avg(struct task_struct *p) > > } > > } > > > > - sa->runnable_avg = cpu_scale; > > + sa->runnable_avg = sa->util_avg; > > > > if (p->sched_class != &fair_sched_class) { > > /* > > > > Something is wrong here. I woke up my machine from suspend-to-RAM this morning > and saw that a completely idle machine had a loadavg of ~7. According to my
Just to make sure: Are you speaking about loadavg that is output by /proc/loadavg or load_avg which is the PELT load ? The output of /proc/loadavg hasn't any link with runnable_avg. The 1st one monitors nr_running at 5 sec interval whereas the other one is a geometrics series of the weight of runnable tasks with a half time of 32ms
> monitoring system this happened to be the loadavg right before I suspended. > I've reverted this, rebooted, created a loadavg >0, suspended and after wake up > loadavg again correctly ranges between 0 and whatever, as expected.
I'm not sure to catch why ~7 is bad compared to correctly ranges between 0 and whatever. Isn't ~7 part of the whatever ?
Vincent
> > -h
| |