Re: [PATCH] sched/deadline: Add sched_dl documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 27 Jan 2014 17:56:07 +0100
Luca Abeni <luca.abeni@xxxxxxxx> wrote:
 
> > > +
> > > +    then, if the scheduling deadline is smaller than the current
> > > time, or
> > > +    this condition is verified, the scheduling deadline and the
> > > +    current budget are re-initialised as
> > > +
> > > +         scheduling deadline = current time + deadline
> > > +         current runtime = runtime
> > > +
> > > +    otherwise, the scheduling deadline and the current runtime are
> > > +    left unchanged;
> > 
> > I've been trying to wrap my head around this a bit. I started writing
> > an email about this when I first examined the patches and never sent
> > it out :-p
> > 
> > Lets take a case where deadline == period. It seems that the above
> > would be true any time there was any delay to starting the task or the
> > task was interrupted by another SCHED_DEADLINE task.
> Not sure about this... Notice that above only applies when a task wakes
> up (moving from a "sleeping" state to a "ready to run" state). Not when
> an already ready task is scheduled.
> Or did I misunderstand your comment?

No no, you understood, I missed that this only happens on wakeup. But
then I have to ask, what happens if the task blocks on a mutex? Would
that cause this check to happen then? It may be nice to add some
comments about exactly when this check is performed.

> 
> 
> > For example, lets say we have two SD tasks. One that has 50ms runtime
> > and a 100ms period. The other has a 1ms runtime and a 10ms period.
> > 
> > The above two should work perfectly fine together. The 10ms period
> > task will constantly schedule in on the 100ms task.
> > 
> > When the 100ms task runs, it could easily be delayed by 1ms due to the
> > 10ms task. Then lets look at the above equation
> See above: the check for the 100ms task is only performed when the task
> unblocks (at the beginning of its period), not when it's scheduled
> (after the 10ms taks).
> 
> This check is designed to take care of the following situation:
> - consider a task with runtime 10ms and period equal to deadline equal
>   to 100ms
> - assume the task wakes up at time t, and is assigned "remaining
>   runtime" 10ms and "scheduling deadline" t+100ms
> - assume the task blocks after executing for 2ms. The "remaining
>   runtime" is now 8ms
> - can the task use "remaining runtime" 8ms and "scheduling deadline"
>   t+100ms when it wakes up again?
>   Answer: if it wakes up before t+20ms, it can. Otherwise, it cannot,
>   because it would consume a fraction of CPU time larger than 10%,
>   causing missed deadlines in other tasks.

Ah, you answered my question here. The check happens every time the
task blocks as well. I still need to read the papers, and even more
importantly, start running more tests with tracing on to review what
exactly happens in the implementation.

> 
> [...]
> > > + SCHED_DEADLINE can be used to schedule real-time tasks
> > > guaranteeing that
> > > + the jobs' deadlines of a task are respected. In order to do this,
> > > a task
> > > + must be scheduled by setting:
> > > +
> > > +  - runtime >= WCET
> > > +  - deadline = D
> > > +  - period <= P
> > > +
> > > + IOW, if runtime >= WCET and if period is >= P, then the
> > > scheduling deadlines
> > > + and the absolute deadlines (d_j) coincide, so a proper admission
> > > control
> > > + allows to respect the jobs' absolute deadlines for this task
> > > (this is what is
> > > + called "hard schedulability property" and is an extension of
> > > Lemma 1 of [2]).
> > 
> > I wonder if we should state the obvious (which is never obvious). That
> > is the user must also have the following.
> > 
> >   runtime < deadline <= period
> > 
> > Although it is fine for deadline = period, runtime should be less than
> > deadline, otherwise the task will take over the system.
> I think if "runtime < deadline <= period" is not respected, then the
> admission control will fail... But yes, repeating it here can be
> useful. If needed I'll add it to the document.

Yeah, it's one of those things that you should know, but I can see
users screwing it up ;-)

-- Steve

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux