KS2007: Realtime and syslets
The biggest pending pieces are threaded interrupt handlers, sleeping spinlocks, and preemptible read-copy-update. The developers would like to get those technologies merged soon, but they do not believe that most users will ever want to turn them on. Linus noted that, while he does not like threaded interrupt handlers in general, they do have one big advantage: they can make debugging interrupt-related problems easier. If an interrupt handler crashes in a current kernel, it brings the whole kernel down with it. Pushing handlers into their own threads makes it possible for the kernel to continue after a crash (possibly in a degraded mode) so that the problem can be investigated. Ben Herrenschmidt claimed that threaded interrupt handlers make life easier for driver writers in general, and should maybe be the default. It will always be possible to turn off threading for situations where direct interrupt handling is required, but most drivers probably do not require that ability.
The other realtime issue which came up was resource guarantees. It seems that there is demand for this feature, but that it is not really being worked on yet. Resource guarantees will probably be implemented through the container framework once that project gets started.
On the syslets side, Zach Brown characterized the technology as "promising but unproven." The basic code works, but there are a lot of loose ends which need to be tied up before it will be anywhere near ready for consideration for the mainline. More testing would also help, but Zach says that not many people are trying this patch set at the moment.
Ingo said that one of the real advantages of syslets it that it enables the implementation of just about any sort of concurrency model one might like to try. If somebody wants the VMS I/O model, it's just a matter of a bit of hacking. Your editor, who still has all twelve sys$qio() arguments burned into his brain, finds this prospect a little worrisome - though the ability to handle any I/O operation asynchronously would certainly be helpful in some situations.
Before that can happen, though, there are a number of places in the kernel
which must be fixed to support full concurrency. The direct I/O code is
one example, as are readahead and the CFQ I/O scheduler, which currently
gets confused by syslets. These parts of the kernel simply do not expect
one process to have multiple operations going simultaneously; fixing them
up could be a significant bit of work. There may also be some performance
issues in the syslet code, but there has not, yet, been a lot of real
measurement work done.
| Index entries for this article | |
|---|---|
| Kernel | Realtime |
| Kernel | Syslets |
Posted Sep 11, 2007 20:46 UTC (Tue)
by vmole (guest, #111)
[Link]
If somebody wants the VMS I/O model,
Yeah! And then we can build a complete DB implementation (but not SQL) into the filesystem, and then use it (with different options) for all the important system DB files, so there's no hope of reading them outside the supplied tools. Also, make sure none the options are truly compatible to the C "stream of bytes" file model, just to make porting fun.
Your editor, who still has all twelve sys$qio() arguments burned into his brain...
Ouch! (for those who've never had the pleasure of VMS programming, "burned" is *exactly* the right term.)
FWIW, VMS had some great technology, and fabulous reliability. But oh, the
interface. Brrr.
KS2007: Realtime and syslets
