Messages in this thread | | | Subject | Re: [PATCH] sched/deadline: Fix stale throttling on de-/boosted tasks | From | Daniel Bristot de Oliveira <> | Date | Wed, 16 Sep 2020 09:40:03 +0200 |
| |
On 9/2/20 11:43 AM, peterz@infradead.org wrote: > On Wed, Sep 02, 2020 at 08:00:24AM +0200, Juri Lelli wrote: >> On 31/08/20 13:07, Lucas Stach wrote: >>> When a boosted task gets throttled, what normally happens is that it's >>> immediately enqueued again with ENQUEUE_REPLENISH, which replenishes the >>> runtime and clears the dl_throttled flag. There is a special case however: >>> if the throttling happened on sched-out and the task has been deboosted in >>> the meantime, the replenish is skipped as the task will return to its >>> normal scheduling class. This leaves the task with the dl_throttled flag >>> set. >>> >>> Now if the task gets boosted up to the deadline scheduling class again >>> while it is sleeping, it's still in the throttled state. The normal wakeup >>> however will enqueue the task with ENQUEUE_REPLENISH not set, so we don't >>> actually place it on the rq. Thus we end up with a task that is runnable, >>> but not actually on the rq and neither a immediate replenishment happens, >>> nor is the replenishment timer set up, so the task is stuck in >>> forever-throttled limbo. >>> >>> Clear the dl_throttled flag before dropping back to the normal scheduling >>> class to fix this issue. >>> >>> Signed-off-by: Lucas Stach <l.stach@pengutronix.de> > >> Acked-by: Juri Lelli <juri.lelli@redhat.com>
I faced a similar issue, but involving DL tasks (not !DL): https://lore.kernel.org/lkml/5076e003450835ec74e6fa5917d02c4fa41687e6.1600170294.git.bristot@redhat.com/
While debugging that problem, I reviewed and tested this patch, and we need it. So:
Reviewed-by: Daniel Bristot de Oliveira <bristot@redhat.com>
Thanks! -- Daniel
> Thanks! >
| |