Re: [PATCH v2 06/23] sched/cache: Track LLC-preferred tasks per runqueue

From: Peter Zijlstra
Date: Wed Dec 10 2025 - 04:43:23 EST


On Tue, Dec 09, 2025 at 02:55:21PM -0800, Tim Chen wrote:

> > > +static void account_llc_dequeue(struct rq *rq, struct task_struct *p)
> > > +{
> > > + int pref_llc;
> > > +
> > > + /*
> > > + * Borrow the uc_se->active from uclamp_rq_inc_id(),
> > > + * uclamp_rq_dec_id() to avoid the unbalanced calculation
> > > + * of rq statistics.
> > > + */
> > > + if (unlikely(!p->sched_llc_active))
> > > + return;
> >
> > Another very confusing comment; what? Also, can you please explain (in
> > the new comment) how we get here without having llc_active set?
>
> The comment meant to say that we are using a similar mechanism as
> accounting done in uc_se->active from uclamp_rq_inc_id(). I agree that
> it confuses more than making things clearer.
>
> How about the following comment to make things clearer:
>
> /*
> * Cache aware scheduling was active when the task was enqueued.
> * Admin has disabled cache aware scheduling before task was dequeued
> * but the accounting has to be kept straight in case cache aware scheduling
> * is re-enabled.
> */

Is having that sched_cache_enabled() test worth it?
account_numa_{en,de}queue() don't seem to have any of this.


> > > + pref_llc = p->preferred_llc;
> > > + if (pref_llc < 0)
> > > + return;
> > > +
> > > + rq->nr_llc_running--;
> > > + rq->nr_pref_llc_running -= (pref_llc == task_llc(p));
> > > + p->sched_llc_active = false;
> > > +}