mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: K Prateek Nayak <kprateek.nayak@amd.com>
To: "Furkan Çalışkan" <frn1furkan10@gmail.com>,
	"Vincent Guittot" <vincent.guittot@linaro.org>,
	mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
	dietmar.eggemann@arm.com, rostedt@goodmis.org,
	bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
	linux-kernel@vger.kernel.org, qyousef@layalina.io
Subject: Re: [PATCH] sched/fair: Fix wakeup_preempt_fair for not waking up task
Date: Thu, 30 Apr 2026 13:19:58 +0530	[thread overview]
Message-ID: <06f3e135-f706-4b6c-8fce-40f562116939@amd.com> (raw)
In-Reply-To: <e896f10c-be12-4de7-8244-38b4d3b86e12@gmail.com>

Hello Furkan,

On 4/30/2026 11:46 AM, Furkan Çalışkan wrote:
> On 4/29/26 19:41, Vincent Guittot wrote:
>> The assumption that p is always enqueued and not delayed, is only true for
>> wakeup. If p was moved while sched_delayed, pick_next_entity will dequeue
>> it during the attach and the cfs might become empty.
>>
>> Fixes: ac8e69e69363 ("sched/fair: Fix wakeup_preempt_fair() vs delayed dequeue")
>> Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
>> ---
>>
>> I have triggered this while running my latency stress test on a new platform.
>>
>>  kernel/sched/fair.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
>> index 728965851842..99fb524c4922 100644
>> --- a/kernel/sched/fair.c
>> +++ b/kernel/sched/fair.c
>> @@ -9147,7 +9147,7 @@ static void wakeup_preempt_fair(struct rq *rq, struct task_struct *p, int wake_f
>>        * Because p is enqueued, nse being null can only mean that we
>>        * dequeued a delayed task.
>>        */
>> -     if (!nse)
>> +     if (!nse && (wake_flags & WF_TTWU))
>>               goto pick;
>>
>>       if (sched_feat(RUN_TO_PARITY))
> 
> When a sched_delayed task is migrated (which can only happen via
> MIGRATE_LOAD per can_migrate_task()), enqueuing it on the dest cpu will
> call wakeup_preempt_fair immediately, and if the dest cpu is not busy,
> pick_next_entity() will likely pick and dequeue it immediately. So a
> wasted enqueue+dequeue pair. Could we skip the enqueue when
> sched_delayed is set, and defer it to the actual wakeup path?

That requires some considerations - if we are migrating a delayed task
to an idle CPU, we can readily block the delayed task if we don't have
other tasks on the migration list.

If the destination is busy, or if we are migrating a bunch of tasks,
we need to know what the final state of the task_timeline will
be to make a decision whether it is okay to block them immediately.

We need to know where the avg_vruntime() and deadline ends up to know
if the task will get picked immediately and we cannot do that without
going through place_entity + __enqueue_entity().

There is also cgroup implication where, the delayed task might not be
picked immediately if it is on a cgroup whose entity is not eligible
and that requires going through the full enqueue + pick.

-- 
Thanks and Regards,
Prateek


  reply	other threads:[~2026-04-30  7:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-29 16:41 Vincent Guittot
2026-04-30  6:16 ` Furkan Çalışkan
2026-04-30  7:49   ` K Prateek Nayak [this message]
2026-04-30  9:21     ` Furkan Çalışkan
2026-05-01 14:49 ` Peter Zijlstra

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=06f3e135-f706-4b6c-8fce-40f562116939@amd.com \
    --to=kprateek.nayak@amd.com \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=frn1furkan10@gmail.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=qyousef@layalina.io \
    --cc=rostedt@goodmis.org \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®