Re: [RFC PATCH v2 4/6] sched/deadline: Introduce deadline servers

From: luca abeni
Date: Tue Oct 06 2020 - 05:51:37 EST


On Tue, 6 Oct 2020 11:35:23 +0200
Juri Lelli <juri.lelli@xxxxxxxxxx> wrote:
[...]
> > > + if (dl_se->server_has_tasks(dl_se)) {
> > > + enqueue_dl_entity(dl_se, dl_se, ENQUEUE_REPLENISH);
> > > + resched_curr(rq);
> > > + __push_dl_task(rq, &rf);
> > > + } else {
> > > + replenish_dl_entity(dl_se, dl_se);
> >
> > I am wondering if here we need a "task_non_contending(dl_se)" after
> > "replenish_dl_entity(dl_se, dl_se);"...
> >
> > Basically, what happened is that all the served tasks blocked while the
> > server was throttled... So, now the server should be disabled (so, we
> > replenish the dl entity but we do not insert it in runqueue).
> > But when the server finished its budget and has been throttled, it has
> > not been disabled (so, its utilization is still in running_bw).
>
> Hummm. For CFS, we call dl_server_stop() after the last CFS task blocks
> and that calls dequeue_dl(SLEEP), which should be calling
> task_non_contending(). That should be happening also while the server is
> throttled and CFS tasks are running outside of it, no?

You are right... I somehow lost this detail.


> Guess I'm missing something.

No, I was the one missing something :)
Sorry about the noise.



Thanks,
Luca