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