Re: [RFC][PATCH 05/22] sched: SCHED_DEADLINE policy implementation

From: Raistlin
Date: Wed Nov 10 2010 - 20:19:19 EST


On Wed, 2010-11-10 at 21:21 +0100, Peter Zijlstra wrote:
> > + if (dl_time_before(dl_se->deadline, rq->clock) ||
> > + dl_entity_overflow(dl_se, rq->clock)) {
> > + dl_se->deadline = rq->clock + dl_se->dl_deadline;
> > + dl_se->runtime = dl_se->dl_runtime;
> > + }
> > +}
>
> Can't we loose runtime deficit this way?
>
No, this should not be the case (I hope!). The rationale is basically
the same of the other e-mail about new instances.

In fact, a task that goes to sleep with some available runtime will be
given new parameters or not, depending on the return value of
dl_entity_overflow, and that's fine, right?

On the other hand, a task blocking while in overrun will (at dequeue_*
and/or put_* time) trigger the bandwidth enforcement logic (which arms
dl_timer) so that:
- if unblocking happens _before_ it becomes eligible again, the
enqueue will be later handled by the dl_timer itself, when it'll
fire, and the task will be given a replenishment starting from its
negative runtime;
- if unblocking happens _later_ than the firing of dl_timer, resetting
the scheduling parameters should be just fine, from the bandwidth
point of view.

Does it make sense?

Regards,
Dario

--
<<This happens because I choose it to happen!>> (Raistlin Majere)
----------------------------------------------------------------------
Dario Faggioli, ReTiS Lab, Scuola Superiore Sant'Anna, Pisa (Italy)

http://blog.linux.it/raistlin / raistlin@xxxxxxxxx /
dario.faggioli@xxxxxxxxxx

Attachment: signature.asc
Description: This is a digitally signed message part