From: Juri Lelli <juri.lelli@redhat.com>
To: K Prateek Nayak <kprateek.nayak@amd.com>
Cc: Andrea Righi <arighi@nvidia.com>,
John Stultz <jstultz@google.com>,
Peter Zijlstra <peterz@infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
Valentin Schneider <valentin.schneider@arm.com>,
Connor O'Brien <connoro@google.com>,
Ingo Molnar <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Vincent Guittot <vincent.guittot@linaro.org>,
Valentin Schneider <vschneid@redhat.com>,
Suleiman Souhlal <suleiman@google.com>,
Metin Kaya <Metin.Kaya@arm.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Zimuzo Ezeozue <zezeozue@google.com>,
Waiman Long <longman@redhat.com>,
Boqun Feng <boqun.feng@gmail.com>,
"Paul E. McKenney" <paulmck@kernel.org>,
Joel Fernandes <joelagnelf@nvidia.com>,
Qais Yousef <qyousef@layalina.io>,
Xuewen Yan <xuewen.yan94@gmail.com>,
kuyo chang <kuyo.chang@mediatek.com>, hupu <hupu.gm@gmail.com>,
Zhan Xusheng <zhanxusheng@xiaomi.com>,
"zhidao su (Xiaomi)" <soolaugust@gmail.com>,
Hui Su <sh_def@163.com>,
"Shubhang Kaushik (Ampere)" <sh@gentwo.org>,
kernel-team@android.com
Subject: Re: [PATCH v33 7/7] sched/proxy: Add deactivated (sleeping) owner handling to find_proxy_task()
Date: Tue, 27 Oct 2026 17:22:28 +0100 [thread overview]
Message-ID: <auDPxCTyGbStTWJD@jlelli-thinkpadt14gen4.remote.csb> (raw)
In-Reply-To: <267d3f71-7f60-48d2-b8dc-bf87f403b94f@amd.com>
Hello!
On 26/10/26 09:56, K Prateek Nayak wrote:
> On 10/24/2026 2:37 PM, Andrea Righi wrote:
> >> +static void do_activate_blocked_waiter(struct rq *target_rq, struct task_struct *p, int en_flags)
> >> +{
...
> >> + if (task_cpu(p) != target_cpu) {
> >> + en_flags |= ENQUEUE_MIGRATED;
> >> + psi_ttwu_dequeue(p);
> >> + proxy_set_task_cpu(p, target_cpu);
> >> + }
> >
> > Can this break SCHED_DEADLINE bw accounting?
> >
> > p is sleeping here (not TASK_WAKING, not TASK_ON_RQ_MIGRATING), so
> > __set_task_cpu() skips migrate_task_rq_dl(): the old rq never does
> > sub_rq_bw(), while ENQUEUE_MIGRATED makes the new rq do add_rq_bw(), so
> > this_bw is leaked on the old rq. And if p is still dl_non_contending,
> > task_contending() on the new rq just cancels the inactive timer, leaving
> > running_bw on the old rq forever and making it underflow on the new rq
> > the next time p blocks.
> >
> > set_task_cpu() doesn't help, because migrate_task_rq_dl() bails out
> > unless TASK_WAKING, so I'm not sure how to fix this case...
>
> I wonder why "p->dl.dl_non_contending" is not sufficient to know if
> there exists residual bandwidth on prev CPU. Seems to have been like
> that since commit 209a0cbda7a0 ("sched/deadline: Improve the tracking
> of active utilization").
>
> Only time task is non-contending is if it goes away with DEQUEUE_SLEEP
> or switched_from_dl() with dl_runtime.
>
> The latter doesn't need migrating the timer as the timer will either
> be cancelled if the task switches back to deadline, or will expire
> where it was queued - set_task_cpu() has no effect in this case.
>
> Only other case that marks "dl_non_contending" is sleep + wakeup and
> for that "p->dl.non_contending" should be sufficient. I don't think
> we ever do a set_task_cpu() for a blocked task other than wakeup do
> we?
>
> Juri, Peter, are we missing something subtle here?
I think Andrea's concern is valid, but I'm not sure I follow what you
propose Prateek (apologies!) or are you saying you don't see an issue
here?
If the issue is confirmed, I wonder if relaxing the first check in
migrate_task_rq_dl() to something like
if (READ_ONCE(p->__state) != TASK_WAKING && !p->is_blocked)
return;
might fix things, but then it's ugly to call it from do_activate_
blocked_waiter(). We could teach set_task_cpu() about blocked waiters
(otherwise it warns) and then call it instead of __set_task_cpu(), but
I'm not sure it's any prettier.
Thanks,
Juri
next prev parent reply other threads:[~2026-10-27 16:22 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-23 22:04 [PATCH v33 0/7] Sleeping Owner Handling for Proxy Execution (v33) John Stultz
2026-10-23 22:04 ` [PATCH v33 1/7] sched/psi: Preserve sleep-persistent PSI flags on off-CPU sleeping dequeues John Stultz
2026-10-24 11:44 ` Peter Zijlstra
2026-10-26 5:00 ` K Prateek Nayak
2026-10-26 4:32 ` K Prateek Nayak
2026-10-26 5:16 ` Zhan Xusheng
2026-10-29 22:02 ` Tejun Heo
2026-10-23 22:04 ` [PATCH v33 2/7] sched/core: Use the scheduling context for remote ticks John Stultz
2026-10-24 13:44 ` Kayra Cizmeci
2026-10-23 22:04 ` [PATCH v33 3/7] sched/core: Activate blocked donor when no owner is found John Stultz
2026-10-24 8:33 ` Andrea Righi
2026-10-26 3:02 ` K Prateek Nayak
2026-10-23 22:04 ` [PATCH v33 4/7] sched/proxy: Set TASK_RUNNING when shortcuting return migration John Stultz
2026-10-24 8:36 ` Andrea Righi
2026-10-26 3:09 ` K Prateek Nayak
2026-10-23 22:04 ` [PATCH v33 5/7] sched/proxy: Break cyclic proxy chains by deactivating blocked tasks John Stultz
2026-10-24 21:19 ` Kayra Cizmeci
2026-10-23 22:04 ` [PATCH v33 6/7] sched/proxy: Detect cycles in proxy walks earlier John Stultz
2026-10-24 15:34 ` Kayra Cizmeci
2026-10-23 22:04 ` [PATCH v33 7/7] sched/proxy: Add deactivated (sleeping) owner handling to find_proxy_task() John Stultz
2026-10-24 9:07 ` Andrea Righi
2026-10-26 4:26 ` K Prateek Nayak
2026-10-27 16:22 ` Juri Lelli [this message]
2026-10-28 3:36 ` K Prateek Nayak
2026-10-28 10:01 ` Juri Lelli
2026-10-28 10:11 ` K Prateek Nayak
2026-10-28 10:36 ` Juri Lelli
2026-10-29 3:27 ` K Prateek Nayak
2026-10-26 7:40 ` K Prateek Nayak
2026-10-26 19:59 ` Kayra Cizmeci
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=auDPxCTyGbStTWJD@jlelli-thinkpadt14gen4.remote.csb \
--to=juri.lelli@redhat.com \
--cc=Metin.Kaya@arm.com \
--cc=arighi@nvidia.com \
--cc=boqun.feng@gmail.com \
--cc=connoro@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=hupu.gm@gmail.com \
--cc=joelagnelf@nvidia.com \
--cc=jstultz@google.com \
--cc=kernel-team@android.com \
--cc=kprateek.nayak@amd.com \
--cc=kuyo.chang@mediatek.com \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=qyousef@layalina.io \
--cc=rostedt@goodmis.org \
--cc=sh@gentwo.org \
--cc=sh_def@163.com \
--cc=soolaugust@gmail.com \
--cc=suleiman@google.com \
--cc=tglx@linutronix.de \
--cc=valentin.schneider@arm.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=xuewen.yan94@gmail.com \
--cc=zezeozue@google.com \
--cc=zhanxusheng@xiaomi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.