Improving Linux Response Time with a Resource Kernel
May 10, 2000 — by Rick Lehrbaum — from the LinuxDevices Archive — 4 viewsResponse time is rapidly becoming more and more critical in ever-increasing numbers of applications, whether their developers think of them as real-time or not. Developers can now ensure that response times can be predictably met, without depending only on error-prone testing and tuning at the end of the system integration cycle. This is being increasingly recognized as the only prudent way to build a responsive system.
The fastest-growing operating system platform for servers and embedded systems is clearly Linux. Supported by a vast army of programmers and many well-known companies, and with its open source and low cost, it is literally conquering the hearts and minds of system integrators everywhere. However, Linux was designed to optimize system throughput, not to provide bounded response time.
At the same time, bounded response time is being widely recognized as a critical component of more and more servers and embedded systems. Telecommunications switching and server systems must support multiple simultaneous QoS requirements. Multimedia transmission and presentation requires bounded audio and video packet handling. Internet service providers frequently wish to differentiate customers with varying QoS requirements. B2B e-commerce sites must provide response-time limited interfaces. Industrial controllers must handle assembly, process control, and inventory within tight response times. The list goes on and on.
As vendors begin releasing Linux distributions targeted toward embedded systems, and claim they are usable for real-time systems, the key question must be whether they include the required technology to support bounded response times, yet are still able to leverage the full power of Linux. System failures illustrate that not only hard real-time systems, but also soft real-time systems need critical predictability support from their infrastructure. A system operating in a response-time limited environment must therefore include support for both hard and soft time constraints.
Linux already provides all of the capabilities expected of a multi-tasking general-purpose operating system. These include (but are not limited to) extensive support for multi-threading, multi-processing, simultaneous users, memory management and protection, architecture-independent features, POSIX support, multiple file systems, network support, and much more.
However, like other time-sharing operating systems, Linux contains many structural elements that severely limit its ability to meet response time constraints, including a non-preemptible kernel, FIFO I/O and message queues, lack of bounded priority inversion support, and primitive, fairness-optimized scheduling mechanisms.
TimeSys Corporation has now incorporated a critical set of components into its TimeSys Linux/RT offering that, together, offer a scalable, highly innovative approach to meeting time constraints. These components can be combined in critical ways to handle a wide variety of application requirements. The most critical of these components is the Resource Kernel (RK) that was originally developed at Carnegie Mellon University.
RK is a Linux Loadable Kernel Module (LKM) that coordinates with the standard Linux kernel to replace some of the most critical functions needed to meet bounded time constraints. LKMs are object modules that can be loaded (inserted) into or removed from the kernel at run-time. For example, RK supports Fixed-Priority Scheduling (with 256 priorities) and priority inheritance that can be used for constructing systems providing guaranteed bounded response time by using analytic techniques such as Rate Monotonic Analysis. In addition, it supports a set of high-resolution timer functions.
However, a unique capability of the RK is its support for a Temporal Firewall. This capability allows an application to reserve CPU capacity (future releases of the TimeSys Resource Kernel will include support for disk and network capacity reservations as well) that can be guaranteed to remain available to the application, even if another high-priority application attempts to monopolize the CPU.
All of the components making up TimeSys Linux/RT are packaged as Linux loadable kernel modules in order to allow the application to be positioned among a wide range of memory footprints. From the application's point of view, the system calls made available by these modules are indistinguishable from the system calls in the kernel itself.
With the power of the Resource Kernel, and the other additions made by TimeSys, Linux has become an important operating system not only for embedded applications, but also for both soft and hard real-time systems.
Author's Bio: Dr. C. Douglass Locke is VP of Technology at TimeSys Corporation. He received a Ph.D in Computer Science from Carnegie-Mellon University, writing his dissertation on real-time scheduling. He has more than 30 years experience in specifying, architecting, designing, and implementating a wide span of real-world applications including space flight, aircraft, shipboard, submarine, command & control, and information systems. Dr. Locke has served on various real-time standardization committees including POSIX, Real-Time CORBA, Real-Time UML, and Real-Time Java.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.