LWN.net Logo

Advertisement

GStreamer, Embedded Linux, Android, VoD, Smooth Streaming, DRM, RTSP, HEVC, PulseAudio, OpenGL. Register now to attend.

Advertise here

Deadline scheduling for Linux

By Jonathan Corbet
October 13, 2009
Much of the realtime scheduling work in Linux has been based around getting the best behavior out of the POSIX realtime scheduling classes. Techniques like priority inheritance, for example, exist to ensure that the highest-priority task really can run within a bounded period of time. In much of the rest of the world, though, priorities and POSIX realtime are no longer seen as the best way to solve the problem. Instead, the realtime community likes to talk about "deadlines" and deadline-oriented scheduling. In this article, we'll look at a deadline scheduler has recently been posted for review and related discussion at the recent Real Time Linux Workshop in Dresden.

Priority-based realtime scheduling has the advantage of being fully deterministic - the highest-priority task always runs. But priority-based scheduling is subject to some unpleasant failure modes (priority inversion and starvation, for example), does not really isolate tasks running on the same system, and is often not the best way to describe the problem. Most tasks are more readily described in terms of an amount of work which must be accomplished within a specific time period; the desire to work in those terms has led to a lot of research in deadline-based scheduling in recent years.

A deadline system does away with static priorities. Instead, each running task provides a set of three scheduling parameters:

  • A deadline - when the work must be completed.
  • An execution period - how often the work must be performed.
  • The worst-case execution time (WCET) - the maximum amount of CPU time which will be required to get the work done.

Deadline-scheduled tasks usually recur on a regular basis - thus the period parameter - but sporadic work can also be handled with this model.

There are some advantages to this model. The "bandwidth" requirement of a process - what percentage of a CPU it needs - is easily calculated, so the scheduler knows at the outset whether the system is oversubscribed or not. The scheduler can (and should) refuse to accept tasks which would require more bandwidth than the system has available. By refusing excess work, the scheduler will always be able to provide the requisite CPU time to every process within the specified deadline. That kind of promise makes realtime developers happy.

Linux currently has no deadline scheduler. There is, however, an implementation posted for review by Dario Faggioli and others; Dario also presented this scheduler in Dresden. This implementation uses the "earliest deadline first" (EDF) algorithm, which is based on a simple concept: the process with the earliest deadline will be the first to run. Essentially, EDF attempts to ensure that every process begins executing by its deadline, not that it actually gets all of its work done by then. Since EDF runs work as early as possible, most tasks should complete well ahead of their declared deadlines, though.

This scheduler is implemented with the creation of a new scheduling class called SCHED_EDF. It does away with the distinction between the "deadline" and "period" parameters, using a single time period for both. The patch places this class between the existing realtime classes (SCHED_FIFO and SCHED_RR) and the normal interactive scheduling class (SCHED_FAIR). The idea behind this placement was to avoid breaking the "highest priority always runs" promise provided by the POSIX realtime classes. Peter Zijlstra, though, thinks that deadline scheduling should run at the highest priority; otherwise it cannot ensure that the deadlines will be met. That placement could be seen as violating POSIX requirements; to that, Peter responds, "In short, sod POSIX."

Peter would also like to name the scheduler SCHED_DEADLINE, for the simple reason that EDF is not the only deadline algorithm out there. In the future, it may be desirable to switch to a different algorithm without forcing applications to change which scheduling class they request. At the moment, the other contender would appear to be "least laxity first" scheduling, which picks the task with the smallest amount of "cushion" time between its remaining compute time and its deadline. Least laxity first tries to ensure that each process can complete its computing by the deadline. It tends to suffer from much higher context-switching rates than EDF, though, and nobody is pushing such a scheduler for Linux at the moment.

One nice feature of deadline schedulers is that no process should be able to prevent another from completing its work before its deadline passes. The real world is messier than that, as we will see below, but, even in the absence of deeper problems, the scheduler can only make that guarantee if every process actually stops running within its declared WCET. The EDF scheduler solves that problem in an unsubtle way: when a process exceeds its bandwidth, it is simply pushed out of the CPU until its next deadline period begins. This approach is simple to implement and ensures that deadlines will be met, but it can be hard on a process which must do a bit of extra computing on occasion.

In the SCHED_EDF patch, processes indicate the end of their processing period by calling sched_yield(). This modification to the semantics of that system call makes some developers uneasy, though; it is likely that the final patch will do something different. There may be a new "I'm done for now" system call added for this purpose.

Peter also gave a talk in Dresden; his was mostly about why Linux does not have a deadline scheduler yet. The "what happens when a process exceeds its WCET" problem was one of the reasons he gave. Calculating the worst-case execution time is exceedingly difficult for any sort of non-trivial program. As Peter puts it, researchers have spent their entire lives trying to solve it. There are people working on automatically deriving WCET from the source, but they are far from being able to do this with real-world systems. So, for now, specification of the WCET comes down to empirical observations and guesswork.

Another serious problem with EDF is that it works much better on single-processor systems than on SMP systems. True EDF on a multiprocessor system requires the maintenance of a global run queue, with all of the scalability problems that entails. One solution is to partition SMP systems, so that each CPU becomes an essentially independent scheduling domain; the SCHED_EDF patch works this way. Partitioned systems have their own problems, of course; the assignment of tasks to CPUs can be a pain, and it is hard (or impossible) to get full utilization if tasks cannot move between CPUs.

Another problem with partitioning is that some scheduling problems simply cannot be solved without occasional process migration. Imagine a two-CPU system running three processes, each of which needs 60% of a single CPU's time. The system clearly has the resources to run those three processes, but not if it is unable to move processes between CPUs. So a partitioned EDF scheduler needs to be able to migrate processes occasionally; the SCHED_EDF developers have migration logic in the works, but it has not yet been posted.

Yet another serious problem, according to Peter, is priority inversion. The priority inheritance techniques used to solve priority inversion are tied to priorities; it is not clear how to apply them to deadline schedulers. But the problem is real: imagine a process acquiring an important lock, [Peter Zijlstra] then being preempted or forced out because it has exceeded its WCET. That process can then block the execution of otherwise runnable processes with urgent deadlines.

There are a few ways to approach this issue. Simplest, perhaps, is deadline inheritance: lock owners inherit the earliest deadline in the system for as long as they hold the lock. More sophisticated is bandwidth inheritance; in this case, a lock owner which has exhausted its WCET will receive a "donation" of time from the process(es) blocked on that lock. A variant of that technique is proxy execution: blocked processes are left on the run queue, but, when they "run," the lock owner runs in their place. Proxy execution gets tricky in SMP environments when multiple processes are blocked on the same lock; the result could be multiple CPUs trying to proxy-execute the same process. The solution to that problem appears to be to migrate blocked processes to the owner's CPU.

Proxy execution also runs into difficulties when the lock-owning process is blocked for I/O. In that case, it cannot run as a proxy for the original blocked task, which must then be taken off the run queue. That, in turn, forces the creation of a "wait list" of processes which must be returned to a runnable state when a different process (the lock owner) becomes runnable. Needless to say, all this logic adds complexity and increases system overhead.

The final problem, according to Peter, is POSIX, but it's an easy one to solve. Since POSIX is silent on the topic of deadline schedulers, we can do anything we want and life is good. He repeated that SCHED_DEADLINE will probably be placed above SCHED_FIFO in priority. There will be a new system call - sched_setscheduler_ex() - to enable processes to request the deadline scheduler and set the parameters accordingly; the SCHED_EDF patch already implements that call. So many of the pieces for deadline scheduling for Linux are in place, but a number of the details are yet to be resolved.

The bottom line is that deadline schedulers in the real world are a non-trivial problem - something that is true of real-world scheduling in general. These problems should be solvable, though, and Linux should be able to support a deadline scheduler at some point in the future. That scheduler will probably make its first appearance in the realtime tree, naturally, but it could eventually find users well beyond the realtime community. Deadline schedulers are a fairly natural fit for periodic tasks like the management of streaming media, which could profitably make use of deadline scheduling to help eliminate jitter and dropped-data problems. But that remains a little while in the future; first, the code must be made ready for widespread use. And that, as we all know, is a process which recognizes few deadlines.


(Log in to post comments)

Deadline scheduling for Linux

Posted Oct 13, 2009 17:11 UTC (Tue) by nix (subscriber, #2304) [Link]

sched_setscheduler_ex()? What is it with people and really bad syscall names lately? If this really is specific to deadline parameters, sched_setscheduler_deadline() would surely be a better name.

Deadline scheduling for Linux

Posted Oct 13, 2009 22:37 UTC (Tue) by vieuxtech@gmail.com (guest, #54592) [Link]

It's not clear why there needs to be a new syscall. sched_setscheduler() already exists, and it's struct sched_param argument can be extended to include parameters specific to particular scheduler policies.

Deadline scheduling for Linux

Posted Oct 14, 2009 10:26 UTC (Wed) by raistlin (guest, #37586) [Link]

Well, extending struct sched_param is more than possible, I agree, but it would be a _really_big_ ABI issue, don't you think?
Especially when a 'legacy' binary comes to, e.g., a sched_getparam, and the data it gets will be bigger than expected... :-(

Regards,
Dario

Deadline scheduling for Linux

Posted Oct 14, 2009 21:10 UTC (Wed) by quotemstr (subscriber, #45331) [Link]

but it would be a _really_big_ ABI issue, don't you think?
I was about to write about how that's not the case, but you're right: whose bright idea was it to have sched_getscheduler not take a length parameter like getpeername does?

Deadline scheduling for Linux

Posted Oct 14, 2009 10:34 UTC (Wed) by raistlin (guest, #37586) [Link]

:-D

Actually, good point!

In our intents _ex stands for EXtended, which means it can be used not only for this particular new scheduling policy, but for all the ones (if/when they will come! :-P) that needs the EXtended sched_param structure.

(It is the same name used by Xenomai for the same purpose, i.e., supporting new scheduling policies with extended parameters, such as POSIX's SCHED_SPORADIC.)

I think it _is_ a good thing to keep this general but, hey, we can discusss about that! :-)

Regards,
Dario

Deadline scheduling for Linux

Posted Oct 14, 2009 16:32 UTC (Wed) by nix (subscriber, #2304) [Link]

OK (though the name is reminiscent of the horrible Win32 API to my ears), but adding a new scheduler requiring different parameters would be another ABI change, wouldn't it, requiring another new syscall: the parameter type would change. Either that or you make the parameter type a void *, which is just ioctl() in new clothes and Linus would tear your lungs out.

Or something like that.

Deadline scheduling for Linux

Posted Oct 14, 2009 22:15 UTC (Wed) by raistlin (guest, #37586) [Link]

Well, this may be true or not, depending on the new new scheduler!

Generally speacking, you are definitely right, since each new scheduler/scheduling class could ask some room for its own parameter(s).
What we were thinking here is (and this also comes from some comments/suggestions we got on LKML):
- if we define a general enough task model, it is likely that even new
algorithms can deal with that, without the need of their very specific
fields;
- if we want, sched_param_ex could be bloated a little bit with some
padding or non-utilized field, reserved for future extensions.

However, I'm sure that, if things keep going, this issue will came up in LKML at some point, and then we we'll see what people there think... :-D

Thanks for your comments,
Dario

Deadline scheduling for Linux

Posted Oct 14, 2009 21:13 UTC (Wed) by quotemstr (subscriber, #45331) [Link]

When you created the _ex functions, why didn't you make them take length parameters like the socket-address ones do, thus solving the ABI compatibility problem once and for all?

Deadline scheduling for Linux

Posted Oct 15, 2009 5:29 UTC (Thu) by raistlin (guest, #37586) [Link]

Very, very nice idea!

/me more than considering that! :-D

Thanks,
Dario

Deadline scheduling for Linux

Posted Oct 22, 2009 10:05 UTC (Thu) by cesarb (subscriber, #6266) [Link]

This ..._ex() naming is really horrible. What do you do when you need to extend it again? Call it ..._ex2()? ..._ex_ex()?

Unix solved that naming problem in a much more elegant way a long time ago, by simply appending the number of parameters. So we have wait3() and wait4(); dup(), dup2(), and the new dup3(); pipe() and pipe2(); inotify_init() and inotify_init1(); and so on (see http://udrepper.livejournal.com/20407.html for how recent some of these are).

Deadline scheduling for Linux

Posted Oct 13, 2009 18:08 UTC (Tue) by clugstj (subscriber, #4020) [Link]

The realtime systems that I've worked on have had three scheduling parameters:

# A deadline - when the work must be completed.
# An execution period - how often the work must be performed.
# An earliest start time - because the data to process will not be available before then.

Deadline scheduling isn't interested in the third parameter and as such is not much more useful than priority-based realtime scheduling.

I can't think of an application where the deadline-based scheduler described here would be sufficient.

Deadline scheduling for Linux

Posted Oct 13, 2009 20:05 UTC (Tue) by zander76 (guest, #6889) [Link]

Hello,

I see your point. I don't see how a execution time would be completely irrelevant. You could potentially use that information for ordering, such as priorities small task above big tasks in case large task doesn't complete on time or priorities large tasks for long uninterrupted processing with small tasks filling in the spaces.

Execution time would be difficult at best to predict but could be used as a guestimate and record actually min/max execution times.

Deadline scheduling for Linux

Posted Oct 13, 2009 20:55 UTC (Tue) by dlang (✭ supporter ✭, #313) [Link]

why would you submit a job if it doesn't yet have the data it needs available?

Deadline scheduling for Linux

Posted Oct 13, 2009 21:00 UTC (Tue) by nybble41 (subscriber, #55106) [Link]

Presumably so that the OS knows to reserve room in the schedule ahead of time for when the data will be available...?

Deadline scheduling for Linux

Posted Oct 13, 2009 21:14 UTC (Tue) by dlang (✭ supporter ✭, #313) [Link]

but without any indication of how much time the process will take to complete, the only thing the OS could do is prohibit anything else from using the CPU between the start time and the deadline, which is almost certainly _not_ the correct thing to do.

Deadline scheduling for Linux

Posted Oct 14, 2009 0:43 UTC (Wed) by njs (guest, #40338) [Link]

Yes, I'd also like to understand what the difference is between the interface clugstj suggests and the existing clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, ...) interface.

Deadline scheduling for Linux

Posted Oct 14, 2009 14:08 UTC (Wed) by clugstj (subscriber, #4020) [Link]

Because I know exactly when it WILL be available. If I have to tell the scheduler each and every time when I want a piece of code (that runs periodically) to run, it is not really doing me much good. I might as well just use the standard realtime priority-based scheduler and set the priority appropriately.

But really, the burning question for me is this: What application is this type of scheduling (deadline scheduling) sufficient for? I just don't see one where this is actually more useful that the standard priority-based scheduler.

What it's good for

Posted Oct 14, 2009 14:12 UTC (Wed) by corbet (editor, #1) [Link]

Any sort of periodic data-processing application can benefit from this sort of scheduling regime. Imagine an audio application which must get data into the sound card's buffers every so often. With deadline scheduling, that can happen and audio glitches go away.

What it's good for

Posted Oct 14, 2009 16:18 UTC (Wed) by clugstj (subscriber, #4020) [Link]

My question is why is "deadline" better than priority-based. In this application, I would just set the priority high for this "audio application" and it would still work. I don't see the "deadline scheduler" helping in any way here.

What it's good for

Posted Oct 14, 2009 16:47 UTC (Wed) by corbet (editor, #1) [Link]

Tweaking the priority is OK if the audio application is the only thing you care about. But priorities don't eliminate interference between applications, and they can be hard to set up correctly in more complex situations.

A bit more information can be found in this posting on the Ericsson site.

What it's good for

Posted Oct 14, 2009 18:47 UTC (Wed) by clugstj (subscriber, #4020) [Link]

OK, I've read the Ericsson posting. The example there is dead easy to do with priority-based scheduling, the 20ms tasks are done at a higher priority than the rest of the software.

The author doesn't explain at all why he feels the deadline scheduler is a better fit - he just says that it is.

Correction!

Posted Oct 14, 2009 17:43 UTC (Wed) by khim (subscriber, #9252) [Link]

In this application, I would just set the priority high for this "audio application" and it would still work.

Small correction: s/would still work/will break easily/. If you only have one application then you don't need any scheduler. But if you have few applications they will step on each other toes. With deadline scheduler if application got the promise - it'll be run and other applications will behave (they'll be evicted in worst case).

It's not the job for kernel to provide full set of usefull functions to program - it should provide minimal set needed to make implementation possible. AFAICS normal scheduler does not offer enough, while deadline scheduler does (even if I'm not 100% sure it does so with current API).

Correction!

Posted Oct 14, 2009 18:39 UTC (Wed) by clugstj (subscriber, #4020) [Link]

"it'll be run and other applications will behave (they'll be evicted in worst case)."

So, you are just trading one failure mode for another (if the system is overloaded). Misbehaving applications cause failure in either case. Also, having the scheduler reject work that it can't finish in time is STILL breakage of the system.

If I have two tasks, one real-time, one not, I set the real-time task to a higher priority and it gets all the CPU it wants, when it wants it - no breakage is possible from lower-priority tasks.

Where is the "killer app" for the deadline scheduler? People have been looking for it for years and no one seems to have found it. Maybe it doesn't exist.

People were happy for years...

Posted Oct 14, 2009 20:43 UTC (Wed) by khim (subscriber, #9252) [Link]

Where is the "killer app" for the deadline scheduler

Where is the killer app for multitasking OS? People used DOS for ten years and were happy. Why, they even had background printing and other goodies - with resident programs. Then suddenly... OS/2, Windows, Linux, etc. WTF all the hoopla is all about?

As long as your system has one and one realtime program only - you don't need deadline scheduler. But if you have two... Think mobile phone: you have two competing real-time tasks. One is game you are playing right now and another is actual phone application which sends and receives calls! I sure as hell want to have high response times from my games (and I currently don't have that) but if someone calls me - all bets are off. If game can survive - I'm happy, but if not - I don't care.

Sure you can do this with todays scheduler and some tricks... like you can run print.exe for background printing in DOS. Both are poor, fragile solutions.

Correction!

Posted Oct 14, 2009 21:13 UTC (Wed) by raistlin (guest, #37586) [Link]

Hi clugstj, I'll try to show my point of view on this point...

First of all, I kind of agree with you that it is not easy to find an application, or even a set of applications, that do not work _at_all_ with the current combination of best-effort + fixed priority real-time scheduling.
In fact, this is right the scheme that is implemented in Linux as for now and --fortunately for all of us! :-D-- Linux already works very well in many contextes, and succesfully runs thousands of applications!

On the contrary, since no deadline scheduling is in place, not only in Linux, but nor it is in the vast majority of all existent (even real-time) operating systems, it is hard to find an example of an app which is happily scheduled by deadlines at this moment! :-P

This said, the point here is if there are some kind of workload that would be better represented by a runtime/deadline/period model than just by a priority value.
Since you're looking for examples (and, to me, you're right in doing that!) we can consider multimedia applications, that are intrinsically periodic (or sporadic) --e.g., 25 frames per second-- and that intrinsically have deadlines --e.g., presentation times for frames.
Thus, especially if, as many are saying, we have quite a lot of these applications, would life be easier if we let them specify their requirements a little bit more naturally than asking them (or the sysadmin) to tune/tweak their priority?
I think that this is not going to be necessarily true, but if we want to try it out, we need a deadline scheduler! :-D

Then, from a more ``academic'' point of view, which is better from fixed priority and deadline based scheduler is a long struggle, which, as years are passing, is turning into a legendary tale, an epic saga... :-O
Here, in real-time scheduling theory, we have, among the others, two major algorithms: Rate Monotonic, which is fixed priority (prio = 1/task_period), and EDF, which is dynamic.
Again, my personal opinions are:
- FP/RM is very simple to understand and to implement
- FP/RM yields slightly smaller implementation overhead
- FP/RM is very predictable and deterministic, a lot useful in hard
real-time scenarios
- EDF is more flexible and still predictable
- EDF allows better exploitation of system resources (CPU, both on UP and
SMP)
- EDF has more graceful performance degradation in case of system
overload (kind of fairness, bounded tardiness, etc.)
- EDF, for the reasons above, is often considered to be better suited for
soft real-time workloads, especially on mixed rt non-rt systems.

And again, which is the best one? Well, I'm not going to answer! :-D
By the way, I hope I added some bits to the discussion, did I?

Regards,
Dario

Correction!

Posted Oct 22, 2009 8:17 UTC (Thu) by sethml (subscriber, #8471) [Link]

I see this kind of sceduler being useful for two cases:

1) A buggy task which gets stuck in an infinite loop, rather than locking out all lower-priority
tasks and effectively locking out the system as it would with RT sceduling, would just use up
its allocated time. This could be a huge debugging aid and reliability improvement in such a
system.

2) A high priority task can leave some CPU time to lower-priority tasks. For example,
suppose you have a high-priority computational thread which occasionally spends several
CPU-seconds at a time, and a low-priority communication thread. It would be good to limit
the computation thread to consuming no more than 90% of the CPU, so communication can
proceed. Of course, it would be even nicer if it got all 100% when the communication thread
didn't want any.

Correction!

Posted Oct 23, 2009 5:06 UTC (Fri) by damentz (guest, #41789) [Link]

There is no "killer app", but there are killer categories.

Audio, video, 3D accelerated applications (video games) - all these are noticeable if they starve briefly.

Although assigning real time priority to all the applications will work, you can cause a denial of service on your own system and root access is required to set real time priorities without prior configuration.

That's too much risk and work for me, the lowly user.

Deadline scheduling for Linux

Posted Oct 14, 2009 10:50 UTC (Wed) by raistlin (guest, #37586) [Link]

Well, of course all a deadline scheduler needs to do is job are deadlines. :-)

Thus, we can say that execution time are not needed by the scheduler, but they for sure are needed by the guy that performs some kind of admission test, to avoid oversubscription!

The reason why we went for a, let's say, 'bandwidth scheduler based on EDF' is that, as our editor correctly pointed out, WCET estimation is a very difficult job, especially in a system like Linux is!

Regards,
Dario

Deadline scheduling for Linux

Posted Oct 13, 2009 18:19 UTC (Tue) by kjp (guest, #39639) [Link]

An informative article and a chuckle at the last line. Thanks :)

An alternative approach

Posted Oct 13, 2009 22:25 UTC (Tue) by krasic (subscriber, #4782) [Link]

Perhaps a bit of an apples and oranges issue, but some here might be interested in work we presented earlier this year at the Eurosys 2009 conference:

http://www.eecg.toronto.edu/~ashvin/publications/timely-s...

Our work might be thought of somewhat like a deadline scheduler. Instead of deadlines, we focus on release-times--i.e. when the application would like to execute. In our model, the application partitions it's own work into time-critical and computational events. It uses a new system call to supply timing (release-times) directly to the kernel, and to cooperate with other time-sensitive tasks.

A central thesis of our work is that responsiveness (running when you want to run) and fairness (amount of time one gets) should be independent.

Bottom line: we can maintain 1ms range responsiveness even while the system is 100% loaded. Our work is targeted to adaptive applications, i.e. those that can adapt quality by skipping less important work, so as to maintain timing for the more important stuff.

In the paper, we give examples with video, and also modified the X11 server.

-- Buck

An alternative approach

Posted Oct 14, 2009 10:54 UTC (Wed) by raistlin (guest, #37586) [Link]

Actually, I'm very interested in that, and I was not aware of this work... I'll surely take a look at it... Thanks!

Regards,
Dario

An alternative approach

Posted Oct 16, 2009 3:41 UTC (Fri) by njs (guest, #40338) [Link]

There was some discussion here a few months ago too that you might find interesting: http://lwn.net/Articles/340023/

An alternative approach

Posted Oct 22, 2009 14:51 UTC (Thu) by renox (subscriber, #23785) [Link]

It seems that both the patch and the paper would be more usefully posted to lkml (especially now since apparently the deadline scheduler is studied): lwn is hardly the good place for this discussion..

Deadline scheduling for Linux

Posted Oct 14, 2009 13:13 UTC (Wed) by mgross (subscriber, #38112) [Link]

Hmm, expressing task's and kernel processing in terms of Deadline's one could use that to consolidate events, wake ups and other activities within the kernel to squeeze out more battery life while specifying interactivity parameters in terms of some global and local "deadline" values.

Deadline scheduling for Linux

Posted Oct 14, 2009 21:30 UTC (Wed) by raistlin (guest, #37586) [Link]

Hi,

actually, I agree, relationship between real-time (especially deadline based) scheduling and power management is a very interesting topic!

There is some (mostly theoretical) work that has already been done, even from our group, but we are open to any new idea that may came up here... Any kind of suggestion will be more than welcome! :-)

Regards,
Dario

Mailing list?

Posted Oct 14, 2009 20:58 UTC (Wed) by mb (subscriber, #50428) [Link]

Is there a mailing list (except lkml) where the developers are subscribed to?

Mailing list?

Posted Oct 14, 2009 21:25 UTC (Wed) by raistlin (guest, #37586) [Link]

Hi,

yes, we are having an internal ML. Now that the project said 'hello' to the outside world we are setting things up to open the developping process as well, and this will include the ML.

I am right now moving the project repositories, with the new version of the patch referred in this article, on gitorious.org.
The webpage of the project (www.evidence.eu.com/sched_edf.html) will be updated soon with all the information.

However, for any kind of issue, question, communication or whatever, you can reach me at raistlin_AT_linux_DOT_it, I will be happy to (try to) help! :-D

Regards,
Dario

Deadline scheduling for Linux

Posted Oct 14, 2009 21:36 UTC (Wed) by raistlin (guest, #37586) [Link]

Hello,

Many thanks to _the_Editor_ for taking some of its precious time to comment our work with such a detailed and accurate post [and especially for such a cool picture of me :-D].

Thanks again.

For the SCHED_EDF team,
Dario

SCHED_DEADLINE: new version of the patch released

Posted Oct 17, 2009 18:26 UTC (Sat) by raistlin (guest, #37586) [Link]

And finally, here it is, for all the interested people, the new version of our deadline based scheduler, renamed SCHED_DEADLINE as requested by LKML.

LKML: http://lkml.org/lkml/2009/10/16/161
Home page: http://www.evidence.eu.com/sched_deadline.html
Repo: git://gitorious.org/sched_deadline/linux-deadline.git
Wiki (with tests and measurements): http://gitorious.org/sched_deadline/pages/Home

Thanks again to everyone for the comments,
Dario

Rotating priorities

Posted Oct 26, 2009 10:02 UTC (Mon) by Nicolas.Boulay (guest, #59722) [Link]

I have already seen a simple algorithme that give garanties latencies responses.

If you have 3 tasks, A, B, C. A wants 50% of the lowest possible latency, B and C want only 25% of it.

So you have a list of rotating priority with [A,B,A,C]. So you could garanties the time between 2 accesses of the cpus.

Each time you need to take a decision the list of task rotate (or at fixed period of time), then you use the priorities like for usual fixed priorites task scheduler.

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds