mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Gabriele Monaco <gmonaco@redhat.com>
Cc: juri.lelli@redhat.com, Ingo Molnar <mingo@redhat.com>,
	linux-kernel@vger.kernel.org, williams@redhat.com
Subject: Re: [PATCH] sched/deadline: Fix server stopping with runnable tasks
Date: Tue, 13 Jan 2026 10:37:06 +0100	[thread overview]
Message-ID: <20260113093706.GT830755@noisy.programming.kicks-ass.net> (raw)
In-Reply-To: <20260113085159.114226-3-gmonaco@redhat.com>

On Tue, Jan 13, 2026 at 09:52:01AM +0100, Gabriele Monaco wrote:
> The deadline server can currently stop due to idle although fair tasks
> are runnable. This happens essentially when:
> 
> * the server is set to idle, a task wakes up, the server stops
> * a task wakes up, the server sets itself to idle and stops right away
> 
> Address both cases by clearing the server idle flag whenever a fair task
> wakes up and accounting also for pending tasks in the definition of idle.
> 
> Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
> ---
> 
> This is really quick and dirty but seems to fix it according to the
> models. I also updated the chart to show what is happening here.
> I added the same event (server_resume) to the model.
> 
>  kernel/sched/deadline.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
> index 138136742871..1070e93350df 100644
> --- a/kernel/sched/deadline.c
> +++ b/kernel/sched/deadline.c
> @@ -1376,7 +1376,7 @@ update_stats_dequeue_dl(struct dl_rq *dl_rq, struct sched_dl_entity *dl_se, int
>  
>  static void update_curr_dl_se(struct rq *rq, struct sched_dl_entity *dl_se, s64 delta_exec)
>  {
> -	bool idle = rq->curr == rq->idle;
> +	bool idle = rq->curr == rq->idle && !rq->nr_running && !rq->ttwu_pending;

This is idle_cpu(), perhaps we can lift that thing into sched.h or so.

>  	s64 scaled_delta_exec;
>  
>  	if (unlikely(delta_exec <= 0)) {
> @@ -1560,8 +1560,8 @@ void dl_server_update(struct sched_dl_entity *dl_se, s64 delta_exec)
>   * | 8 |       B:zero_laxity-wait       |     |    |
>   * |   |                                | <---+    |
>   * |   +--------------------------------+          |
> - * |     |              ^     ^           2        |
> - * |     | 7            | 2   +--------------------+
> + * |     |              ^         ^       2        |
> + * |     | 7            | 2, 1    +----------------+
>   * |     v              |
>   * |   +-------------+  |
>   * +-- | C:idle-wait | -+
> @@ -1606,8 +1606,11 @@ void dl_server_update(struct sched_dl_entity *dl_se, s64 delta_exec)
>   *   dl_defer_idle = 0
>   *
>   *
> - * [1] A->B, A->D
> + * [1] A->B, A->D, C->B
>   * dl_server_start()
> + *   dl_defer_idle = 0;
> + *   if (dl_server_active)
> + *     return; // [B]
>   *   dl_server_active = 1;
>   *   enqueue_dl_entity()
>   *     update_dl_entity(WAKEUP)
> @@ -1741,6 +1744,7 @@ void dl_server_start(struct sched_dl_entity *dl_se)
>  {
>  	struct rq *rq = dl_se->rq;
>  
> +	dl_se->dl_defer_idle = 0;
>  	if (!dl_server(dl_se) || dl_se->dl_server_active)
>  		return;

Yeah, this seems sensible.

Let me pick it up and do that idle_cpu() thing.

  reply	other threads:[~2026-01-13  9:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-12  9:02 sched/deadline: Server stops while fair tasks are still runnable Gabriele Monaco
2026-01-12 14:45 ` Juri Lelli
2026-01-13  8:52   ` [PATCH] sched/deadline: Fix server stopping with runnable tasks Gabriele Monaco
2026-01-13  9:37     ` Peter Zijlstra [this message]
2026-01-13  9:42       ` Gabriele Monaco
2026-01-13  9:48         ` Peter Zijlstra
2026-01-13  9:50         ` Juri Lelli
2026-01-13 10:43     ` [tip: sched/urgent] " tip-bot2 for Gabriele Monaco

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=20260113093706.GT830755@noisy.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=gmonaco@redhat.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=williams@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®