Deadline Scheduling Proposed For the Linux Kernel
c1oud writes "At the last Real-Time Linux Workshop, held in September in Dresden, there was a lot of discussion about the possibility of enhancing real-time capabilities of Linux by adding a new scheduling class to the Linux kernel. According to most kernel developers, this new scheduling class should be based on the Earliest Deadline First (EDF) real-time algorithm. The first draft of the scheduling class was called 'SCHED_EDF,' and it was proposed and discussed on the Linux Kernel Mailing List (LKML) just before the workshop. Recently, a second version of the scheduling class (called 'SCHED_DEADLINE,' to meet the request of some kernel developers) was proposed. Moreover, the code has been moved to a public git repository on Gitorius. The implementation is part of a FP7 European project called ACTORS, and financially supported by the European commission. More details are available."
because i'm using Earliest Deadline First scheduling!
Misleading title, just 'cause they can.
I used to be into the Linux kernel a couple of years ago but since then I haven't really followed it anymore. What's the difference between these scheduling algorithms and do they work better than the current scheduling system?
Custom electronics and digital signage for your business: www.evcircuits.com
Has a deadline based scheduler been done before? It seems like an excellent idea for time sensitive (real time) processing. I have worked with RT os's before, iRMX mostly, and always wondered how the scheduling worked.
Sometimes the best solution is to stop wasting time looking for an easy solution.
The EU-funded projects are somewhat interesting in my experience. They tend to fund both academics and researchers from industry to do stuff and the projects tend to be more focused on practical results than a normal project funded by a research council. They can still generate research papers, etc, but there's more of an emphasis on producing new code that can actually be *used* to do stuff that wasn't available before. Whereas more academic research normally focuses on getting the code sufficiently robust that papers can be published about it, then it's often forgotten.
I think the more practically focused work of this kind is valuable and would like to see more. It is less "valuable", academically and as such I suspect academics are less inclined to attribute prestige to those who have worked on it. It would be nice to see a bit more glory given to folks who work on these projects (disclaimer, I have done a *very* small amount of work on one myself) as a valid direction vs industry or academia. Also, this mode of development does remind me a little of some of RMS's writings about how Free Software development could be funded - here we have effectively a government body giving money to worthy causes, as represented by a team of interested experts, to enhance open source software for everyone involved in reasonably directed ways. Ideally it'd be nice to see "get stuff upstream" be a completion goal for these projects, I'm not sure to what extent that is already true.
Is this suitable as a general purpose scheduler or is it just for real-time systems?
At some point the anti-government rant is too vague to be effective.
Remember Con Kolivas.
to *BSD's "dead scheduling"?
just let them fade gently into that goodnight.
"If still these truths be held to be
Self evident."
-Edna St. Vincent Millay
Is this thing going to replace https://www.rtai.org/ completely?
More importantly, can http://linuxcnc.org/ a CNC software, benefit from this extension?
I don't know what all the fuss is about. I just use CRON....
Thank you, I won't be here all week...
www.isoHunt.com
I can't wait for my Linux installation to become at least 80% more efficient with this scheduler.
I know that I become more efficient by at least that amount when a deadline approaches!
Give it up.
Meatloaf's new scheduler is not on your list, but then again it isn't in mainline yet.
have a problem with it.
The problem is that real-time issues aren't necessarily limited to a "get there before it's too late" scenario. In many real-time scenarios you have to comply with a timing "window" where being early is just as bad as being late. Imagine how bad music would sound if the time between notes were merely guaranteed to not exceed a certain maximum.
In any case, PC's are a bad platform for software-based real-time unless you can turn off things like caches that introduce unpredictable delays.
This is exactly right.
I used to work at a video duplicating plant where we controlled our source machines (Beta, DigiBeta, C1s, D2s, etc.) via a central computer. We had about 20 source machines providing movies, commercials, logos, and trailers to over 4000 VHS recorders divided into 14 racks.
Until we got the centralized computer management thingie, we used manual switchboards and our skills to start, synchronize, and switch between, different source machines providing logos, trailers, commercials, and features, making sure each "item" was properly synchronized after each other.
This was not so difficult with just trailers before a film, but if you had two source reels that needed to be switched in the middle of a movie, you had to make damn sure you didn't switch sources more than a couple of frames out of sync, or you'd get a really bad copy. It was a fun little game, but the computerized system, of course, made the whole thing much easier and much more accurate.
But of course, this accuracy depended on the accuracy of the OS the system ran on. A running video player controlled via RF over BNC cables doesn't provide interrupts, the entire thing had to be timed to the frame from within the application itself. And not for one source and one target, but for M sources and M targets. So you needed an OS which absolutely guaranteed a time slice from the kernel at an absolutely non-negotiable point in time.
That, at the time, would be Windows 3.11 :) And the time (when I left) was 1998. We were wondering at the time why the hell they'd use Windows 3.11 for that task, but I'm pretty sure they're still using that old thing, at least I don't see any reason why they wouldn't ;)
How does this scheduling compare to how "Pre-emptive Multitasking" was performed on something like the AmigaOS? Does it allow for the same benefits as have been described for it? And if so, would there be any inevitable downsides to it for how Linux operates and why?
My Linux knowledge is not yet very deep but I have occasionally read mention here and there of it's multitasking methodology being different from that of many other OS's and that it is part of what keeps it from becoming a desktop entertainment type of PC OS. Is this true? And is the difference really very great anymore? If the scheduling talked about in TFA is too heavy handed, are there any other ways to improve the Linux "Pre-emptive Multitasking" behavior that wouldn't be problematic?
Or could a scheduling feature like this be made into something that you could turn On/Off at will without having to recompile etc every single time you need it's benefits?
I did swith from CFS to Deadline about week ago. I didn't even know this is now suggested. I just wanted to try does it help situation at all. Somehow I have feeled that CFQ has slowed my system.
You can swtich the scheduler in running system, no need to even logout or restart. This is one reason why I love Linux OS (monolithic kernel = OS).
became a root (or use sudo if it is a must).
First to check out what scheduler you are currently using and what are available on your Linux OS:
cat /sys/block/sda/queue/scheduler
then switch to deadline by simply giving command:
echo deadline > /sys/block/sda/queue/scheduler
The Linux OS will first execute all currently running jobs with old scheduler what it was doing and then switch to new scheduler. On my system, it was right away because I was not running any heavy tasks.
check again has the switch be done.
cat /sys/block/sda/queue/scheduler
And you should see [deadline] and not [cfq]
That's it. Simply as that. But when you reboot the Linux OS, you need to do that again or then you can pass that to GRUB to order Linux OS to start with that scheduler.
By adding in menu.lts option, to same line what starts by "kernel". To the end of that line just place this:
elevator=deadline So it is the last on that line. Then it will be the used scheduler of Linux OS for all process just from begin of system boot.
On my system, the speedup is good when running few applicatios only. But when multitasking few I/O apps, I got feeling it is slower. Like running a database sync, watching video and updating system packages made few hickups. Thats why I am littlebit curious this change by default. And I would like to test the BFS.
and CFQ is better on multiuser environments than deadline.
But this is the current one and mayby the newer should be tested first.
I welcome anything that spices up competition between vxWorks, LynxOS, Green Hills, etc.
There are a huge number of yeast infections in this county. Probably because we're downriver from the bread factory.
1970 just left a message. It says, "You're Welcome."
I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
I love the daily KOS. The question is why does the CIA need a leftist blog?.
Oh well
Liberty.
I thought Linus Torvalds was using Minix when he wrote Linux.
I run a genuine realtime kernel here (2.6.29-rt23), and I can tell you it kicks ass.
Prior to using a realtime kernel, some low priority background tasks like Tor often got little CPU time on my quad-core machine - even when the machine was idle. Worse, high priority tasks (eg. games) would often stop for such nonsense as their own disk activity. Furthermore, the active process count alone adversely affected performance - setting 50% of my processes to idle priority trippled performance of tasks given priorities as high as -19.
After getting a realtime kernel, even idle tasks could soak up any leftover CPU cycles. Tor reliability went from one page in fifteen successfully downloading to 9 out of 10 with sufficient latency and bandwidth to handle YouTube and other video sites. Games now perform smoothly even while doing full blown disk backups.
The effect generally seems to be that non-realtime systems spend too much time going through the process list to achieve low latencies. Now I have serious doubts that any hybrid scheduler that doesn't enforce realtime preemption on lower priority tasks - not to mention the kernel itself - is going to compare with my system.
Getting the realtime patches to mainline status would probably be better for everyone than semi-adequate jobs that can only reduce interest in true hard realtime systems.