Re: [tip:sched/core] [sched/fair] 089d84203a: pts.schbench.32.usec,_99.9th_latency_percentile 52.4% regression

Vincent Guittot <[email protected]>
Newsgroups dev.linux.lists.oe-lkp,org.kernel.vger.linux-kernel
Message-ID <CAKfTPtBYqjcxS7S4z-e9LrSmaeR2Qhs-8twVERBa_YfyOQf0JA@mail.gmail.com>
On Thu, 18 Dec 2025 at 11:20, Peter Zijlstra <[email protected]> wrote:
>
> On Thu, Dec 18, 2025 at 03:41:55PM +0530, Shrikanth Hegde wrote:
> > On 12/18/25 2:07 PM, Peter Zijlstra wrote:
> > > On Thu, Dec 18, 2025 at 12:59:53PM +0800, kernel test robot wrote:
> > > >
> > > >
> > > > Hello,
> > > >
> > > > kernel test robot noticed a 52.4% regression of pts.schbench.32.usec,_99.9th_latency_percentile on:
> > > >
> > > >
> > > > commit: 089d84203ad42bc8fd6dbf41683e162ac6e848cd ("sched/fair: Fold the sched_avg update")
> > > > https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git sched/core
> > >
> > > Well, that obviously wasn't the intention. Let me pull that patch :/
> >
> > Is it possible because it missed scaling by se_weight(se) ??
>
> >  static inline void
> >  enqueue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
> >  {
> > -       cfs_rq->avg.load_avg += se->avg.load_avg;
> > -       cfs_rq->avg.load_sum += se_weight(se) * se->avg.load_sum;
> > +       __update_sa(&cfs_rq->avg, load, se->avg.load_avg, se->avg.load_sum);
> >  }
>
> Ah, indeed, something like so then? Can the robot (Oliver/Philip)
> verify?

yes, rq tracks the weighted sum whereas se tracks the unweighted sum

>
> (I was going to shelf it and look at it after the holidays, but if this
> is it, we can get it fixed before I dissapear).
>
> ---
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 76f5e4b78b30..7377f9117501 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -3775,13 +3775,15 @@ account_entity_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se)
>  static inline void
>  enqueue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
>  {
> -       __update_sa(&cfs_rq->avg, load, se->avg.load_avg, se->avg.load_sum);
> +       __update_sa(&cfs_rq->avg, load, se->avg.load_avg,
> +                   se_weight(se) * se->avg.load_sum);
>  }
>
>  static inline void
>  dequeue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)
>  {
> -       __update_sa(&cfs_rq->avg, load, -se->avg.load_avg, -se->avg.load_sum);
> +       __update_sa(&cfs_rq->avg, load, -se->avg.load_avg,
> +                   se_weight(se) * -se->avg.load_sum);
>  }
>
>  static void place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.