Re: [PATCH] sched/fair: avoid !CONFIG_SMP cpufreq update callbacks when go idle

From: Jisheng Zhang
Date: Mon Jun 27 2016 - 04:47:53 EST


Dear Peter,

On Mon, 27 Jun 2016 10:37:21 +0200
Peter Zijlstra wrote:

> On Mon, Jun 27, 2016 at 03:56:03PM +0800, Jisheng Zhang wrote:
> > This is to avoid cpufreq update callbacks when we go idle on UP
> > platforms.
>
> How so? the patch only avoids calling the update for (!root) cgroups --
> which makes sense, but I'm not seeing how that's related to going idle,
> or UP at all.

oops, I may mis-understand below comment at cfs_rq_util_change()

* It will not get called when we go idle, because the idle
* thread is a different class (!fair),

I mis-read the comment as:

it's the "&rq->cfs == cfs_rq" check to prevent the calling when go idle.

So the patch still make sense, but I need to update the commit msg?

Thanks,
Jisheng

>
> >
> > Signed-off-by: Jisheng Zhang <jszhang@xxxxxxxxxxx>
> > ---
> > 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 bdcbeea..236ec5b 100644
> > --- a/kernel/sched/fair.c
> > +++ b/kernel/sched/fair.c
> > @@ -3121,7 +3121,8 @@ static inline void update_load_avg(struct sched_entity *se, int not_used)
> > struct cfs_rq *cfs_rq = cfs_rq_of(se);
> > struct rq *rq = rq_of(cfs_rq);
> >
> > - cpufreq_trigger_update(rq_clock(rq));
> > + if (&rq->cfs == cfs_rq)
> > + cpufreq_trigger_update(rq_clock(rq));
> > }
> >
> > static inline void
> > --
> > 2.8.1
> >