Re: EDF - "earliest deadline first" scheduler

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

 



On Mon, Apr 03, 2017 at 03:53:27PM +0300, Ran Shalit wrote:
> On Mon, Apr 3, 2017 at 8:06 AM, Ran Shalit <ranshalit@xxxxxxxxx> wrote:
> > On Mon, Apr 3, 2017 at 5:38 AM, Alison Chaiken <alison@xxxxxxxxxxxxxxxx> wrote:
> >>  Ran Shalit <ranshalit@xxxxxxxxx> wrote:
> >>> I have found in
> >>> https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/cyclic
> >>> that there is EDF scheduler option for creating a periodic RT thread.
> >>> Yet, I could not understand what's behind the EDF scheduler
> >>
> >>
> >> Have a look at "Using SCHED_DEADLINE" at
> >>
> >> http://elinux.org/ELC_Europe_2016_Presentations
> >>
> >> Also, look for papers on this topic by Juri Lelli.
> >>
> >> HTH,
> >> Alison
> >
> > Hi Alison,
> >
> > Thank you very much.
> > I reviewed the material, which is very interesting, but I am not yet
> > sure which timer are used internally in SCHED_DEADLINE.
> > Is it posix or non-posix ?
> >
> > Thanks,
> > Ran
> 
> I am trying to understand which scheduler is better used with RT.
> In the wiki there is an example for SCHED_FIFO, periodic time.
> But in sched_deadline wiki ( https://wiki.automotivelinux.org/sched_deadline )
> it is said as following:
> "
>  Using SCHED_FIFO/SCHED_RR, instead, we can give that kind of
> guarantee only using a global period, with the constraint that “a
> subgroup must have a smaller or equal period to its parent”.
> The latency experienced by a task (i.e., the time between two
> consecutive executions of a task) is not deterministic and cannot be
> bound, since it highly depends on the number of tasks running in the
> system at that time. Using EDF, instead, this time is deterministic,
> bounded and known at any instant of time."
> 
> I am not sure now. Does it mean that using more than one SCHED_FIFO
> periodic thread is not deterministic compared with SCHED_DEADLINE?

It means that when you use priorities, you basically do a one-way mapping 
between the inherit deadlines in your tasks to a set of static priorities. 
As a developer you know *when* the tasks needs to complete, right? So then 
the job is to pick a priority and hope that no other higher-prioritized 
thread preempts you and cause you to miss your deadline.

And that is the problem with a complicated system, many tasks lead to an 
intractable problem of getting all the priorities right, causing you no end 
to the headache.

With SCHED_DEADLINE, you express your requirements directly as deadlines, 
thus avoid that whole one-way mapping and instead the tasks relative 
priority will adjust as the scheduler now has a _much_ more comprehensive 
view of the requirements.

-- 
Henrik Austad

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux