Re: [PATCH] sched/deadline: Make dl_rq->pushable_dl_tasks updates drive dl_rq->overloaded

From: Daniel Bristot de Oliveira
Date: Mon Oct 02 2023 - 05:15:21 EST


On 9/28/23 17:02, Valentin Schneider wrote:
> dl_nr_migratory is increased whenever a DL entity is enqueued and it has
> nr_cpus_allowed > 1. Unlike the pushable_dl_tasks tree, dl_nr_migratory
> includes a dl_rq's current task. This means a dl_rq can have a migratable
> current, N non-migratable queued tasks, and be flagged as overloaded and have
> its CPU set in the dlo_mask, despite having an empty pushable_tasks tree.
>
> Make an dl_rq's overload logic be driven by {enqueue,dequeue}_pushable_dl_task(),
> in other words make DL RQs only be flagged as overloaded if they have at
> least one runnable-but-not-current migratable task.
>
> o push_dl_task() is unaffected, as it is a no-op if there are no pushable
> tasks.
> o pull_dl_task() now no longer scans runqueues whose sole migratable task is
> their current one, which it can't do anything about anyway.
> It may also now pull tasks to a DL RQ with dl_nr_running > 1 if only its
> current task is migratable.
>
> Since dl_rq->dl_nr_migratory becomes unused, remove it.
>
> RT had the exact same mechanism (rt_rq->rt_nr_migratory) which was dropped
> in favour of relying on rt_rq->pushable_tasks, see:
> 612f769edd06 ("sched/rt: Make rt_rq->pushable_tasks updates drive rto_mask")
>
> Link: https://lore.kernel.org/all/20230811112044.3302588-1-vschneid@xxxxxxxxxx/
> Signed-off-by: Valentin Schneider <vschneid@xxxxxxxxxx>

Reviewed-by: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx>

Thanks!
-- Daniel