Sporadic server is a real-time scheduling algorithm used to control the
execution of processes/threads on a system. This scheduler allows one to set
the maximum amount of time a process may receive in a specified time window.
The basic idea is that the server is given a time budget at the server's
priority that it consumes when executing on the processor, and which is
replenished according to some rules.
- bounds the CPU time consumed by a process
- guarantees CPU time given to a process
- conforms process's execution to simpler model
Replenishments occur one replenishment period in the future from the time
the server became runnable (i.e. activation time) for the amount used since the
The maximum amount of time used by the process is limited to its available
At this point a patch to the Linux kernel (v2.6.28) exists that provides a basic
version of sporadic server.
- Additional fixes added. Fixes budget exhaustion, invalid
replenishments, as well as adds optimizations such as removing unnecessary
timers, accounting for context switches, etc.
- High-resolution kernel timers
- Real-Time Scheduler
- x86 time stamp counter(TSC) for precise time accounting
- Time Tracing
- Sporadic Server
- Be able to test and verify scheduler operation (LTTng, hourglass, etc.)
- Upgrade patch to newer version of the kernel (at least 2.6.31, ideally 2.6.34).
- Modify budget consumption/replenishment rules to correspond to RTAS '10 paper.
Allow SCHED_SPORADIC to run below non-real-time priorities.
Add interfaces that allow turning implementation with/without POSIX defects (e.g. sysfs?)
Permit SCHED_SPORADIC low priority to be used with non-real-time priorities
Add option for deferrable and polling servers
- Modify activation time to use head of queued replenishments.
- Schedule replenishments based on replenishment queue rather than time since last activation.
- Fix premature replenishment SCHED_SPORADIC defect.
- Implement overrun handling.