Re: [PATCH v4 1/2] sched/fair: Check a task has a fitting cpu when updating misfit

From: Vincent Guittot
Date: Thu Jan 25 2024 - 12:44:33 EST


On Wed, 24 Jan 2024 at 23:46, Qais Yousef <qyousef@xxxxxxxxxxx> wrote:
>
> On 01/23/24 09:32, Vincent Guittot wrote:
>
> > > > @@ -9583,9 +9630,7 @@ check_cpu_capacity(struct rq *rq, struct sched_domain *sd)
> > > > */
> > > > static inline int check_misfit_status(struct rq *rq, struct sched_domain *sd)
> > > > {
> > > > - return rq->misfit_task_load &&
> > > > - (arch_scale_cpu_capacity(rq->cpu) < rq->rd->max_cpu_capacity ||
> > > > - check_cpu_capacity(rq, sd));
> > > > + return rq->misfit_task_load && check_cpu_capacity(rq, sd);

Coming back to this:
With your change above, misfit can't kick an idle load balance and
must wait for the cpu capacity being noticeably reduced by something
else

> > >
> > > You removed 'arch_scale_cpu_capacity(rq->cpu) <
> > > rq->rd->max_cpu_capacity' here. Why? I can see that with the standard
> > > setup (max CPU capacity equal 1024) which is what we probably use 100%
> > > of the time now. It might get useful again when Vincent will introduce
> > > his 'user space system pressure' implementation?
> >
> > That's interesting because I'm doing the opposite in the user space
> > system pressure that I'm preparing:
> > I keep something similar to (arch_scale_cpu_capacity(rq->cpu) <
> > rq->rd->max_cpu_capacity but I remove check_cpu_capacity(rq, sd) which
> > seems to be useless because it's already used earlier in
> > nohz_balancer_kick()
>
> Okay. I need to look at your patches anyway. I can potentially rebase on top of
> your series.
>
>
> Cheers
>
> --
> Qais Yousef