Real-Time Performance in Native Linux
Linux is increasingly finding application in embedded
systems with requirements for real-time responsiveness.
The standard Linux kernel, however, having been designed for
throughput-intensive enterprise duty, and bearing the UNIX legacy of
timesharing and system administration needs,
is not well suited to meet such real-time challenges. In
particular, the kernel is non-preemptible and the scheduling/prioritization
schema is fairness-based.
At present, two main approaches exist for meeting real-time response
requirements in a Linux system: brute-force (real-fast) application
of processor power, and the insertion of secondary kernels that virtualize
the CPU interrupt chain and manage real-time events and processing,
leaving Linux to run (or not) as a lower-priority task under the second kernel.
Unfortunately, these kernel insertion methods present barriers to their
general application: divergent APIs, non-standard programming models, and a
tendency to starve "real" Linux. In short, today´s so-called
"real-time Linux" may offer real-time, but is definitely NOT LINUX.
This presentation presents a third path to real-time Linux :
The use of native Linux real-time capability (i.e., no kernel insertion), by
leveraging the inherent preemptibility of the standard Linux SMP (Symmetric
Multi-Processing) kernel.
Such a native approach utilizes standard Linux code, APIs, and programming
models, and has as its end to make Linux better, rather than subverting it. The
presentation will cover this native approach, covering architecture, build
methodology, and performance considerations in the context of versions
2.4 and future 2.5 kernels.
|