[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <94ea5721-2d32-416c-919c-a0d9e5eadf99@meta.com>
Date: Thu, 17 Jul 2025 19:59:52 -0400
From: Chris Mason <clm@...a.com>
To: Peter Zijlstra <peterz@...radead.org>, mingo@...hat.com,
juri.lelli@...hat.com, vincent.guittot@...aro.org,
dietmar.eggemann@....com, rostedt@...dmis.org, bsegall@...gle.com,
mgorman@...e.de, vschneid@...hat.com
Cc: linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 07/12] psi: Split psi_ttwu_dequeue()
On 7/2/25 7:49 AM, Peter Zijlstra wrote:
> Currently psi_ttwu_dequeue() is called while holding p->pi_lock and
> takes rq->lock. Split the function in preparation for calling
> ttwu_do_migration() while already holding rq->lock.
>
[ ... ]
This patch regresses schbench -L -m 4 -M auto -t 256 -n 0 -r 0 -s 0 from
5.2M RPS to 4.5M RPS, and profiles show that CPU 0-3 are spending more
time in __task_rq_lock()
> -static inline void psi_ttwu_dequeue(struct task_struct *p)
> +static inline bool psi_ttwu_need_dequeue(struct task_struct *p)
> {
> if (static_branch_likely(&psi_disabled))
> - return;
> + return false;
> /*
> * Is the task being migrated during a wakeup? Make sure to
> * deregister its sleep-persistent psi states from the old
> * queue, and let psi_enqueue() know it has to requeue.
> */
> - if (unlikely(p->psi_flags)) {
> - struct rq_flags rf;
> - struct rq *rq;
> -
> - rq = __task_rq_lock(p, &rf);
> - psi_task_change(p, p->psi_flags, 0);
> - __task_rq_unlock(rq, &rf);
> - }
> + if (!likely(!p->psi_flags))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
I think we need roughly one less bang?
-chris
Powered by blists - more mailing lists