Article: Linux lookalike RTOS passes “Quake test”
Feb 15, 2001 — by Rick Lehrbaum — from the LinuxDevices Archive — viewsIn the early days of the IBM PC era, when you wanted to know if a system was “IBM PC compatible”, you'd try running Lotus Flight Simulator on it. That program exercised the system's hardware and software so thoroughly, and took enough liberties with undocumented and inadvisable functions (like writing directly to video RAM), that if Flight Simulator ran on the system you could pretty much count on it… running any IBM PC compatible program.
Those days are long gone, and the new rage — at least in the embedded OS market — seems to have become Linux.
Recently at LinuxWorld in New York, LynuxWorks offered a sneak preview of a capability the company promised a little over a year ago — application binary interface compatibility of the company's proprietary real-time operating system (RTOS), LynxOS, with Linux. Well, whether or not LynxOS is truly ABI compatible with Linux remains to be seen — but at least it appeared to pass the “Quake Test.”
The “Quake demo” consisted of running identical binary images of Quake on two side-by-side systems — one running on top of Linux, and the other on the LynxOS RTOS. The intent of the demo, of course, is to raise the possibility that other Linux software might also run unmodified on LynxOS.
For LynuxWorks, which is currently in its pre-IPO “quiet period,” the possibility of offering such a product to the numerous (and well funded) telecom, industrial, medical, and military projects that require traditional RTOS reliability and performance — but who want to leverage the growing popularity and support for Linux — may well be akin to the quest for the RTOS holy grail.
The Quake demo
Here's what LynuxWorks showed in their demo . . .
- Quake was downloaded from the Internet and compiled on the Linux box.
- The binary image was copied onto the LynxOS box.
- Quake was launched on both boxes simultaneously.
- After starting Quake, a second program called “Intense” — also identical on both systems — was started at the same priority level as Quake. Intense is a tiny and very simple program that contains an endless “while” loop, with the sole purpose of hogging CPU resources.
- When Intense starts running, a noticeable jerkiness becomes apparent in Quake's animation, resulting from the fact that system resources are now being shared between Quake and Intense.
- At this point, a LynuxWorks booth staffer enters commands on the LynxOS system to first raise, then lower, the execution priority of Quake. When Quake's priority is raised, the jerkiness completely disappears. When lowered, it gets much worse — to the point where Quake's display completely freezes when its priority is sufficiently mimized.
- In contrast, because Linux enforces a “fairness algorithm” which ensures that all tasks get a chance to complete regardless of priority, the Linux system does not provide the degree of control over resource use that is possible with LynuxOS.
First, according to LynuxWorks' chairman Inder Singh, the ABI-compatibility demo marks a significant industry milestone. “To my knowledge,” says Singh, “this is the first time anyone has demonstrated 'application binary compatibility' with Linux.”
Traditional RTOSes were designed for mission critical applications, such as process control, where the success of the system depends on never missing a defined deadline. Typical examples might include petroleum refineries or nuclear reactors, where not shutting off a valve could lead to a deadly explosion, or machine control, where not responding to timing constraints could have costly or even dangerous consequences.
In an RTOS, characteristics like worst case response time are very important. RTOSes also tend to be judged on how quickly they respond to internal and external stimuli. However, the single issue of never missing a deadline is considered most important.
Although Linux is generally fast enough in performance and provides acceptable worst-case response times for most desktop and server applications, it is not an RTOS and runs into trouble when “hard real-time performance” is required. In those cases, something else must be done. Several common approaches to enhancing the real-time performance of Linux are . . .
- Adding a real-time front end — either RTLinux or RTAI can be employed to manage high priority tasks outside the context of Linux. In fact, the added module (RTLinux or RTAI) actually “owns” the system's resources and runs Linux as a lower priority task than itself.
- Scheduler enhancements — modifications to Linux are available that improve the performance of the native Linux scheduler. (story)
- Premptibility enhancements — patches and enhancements can be applied to the Linux kernel to reduce the time periods (latencies) during which Linux will not respond to internal or external stimuli (interrupts). (story)
- Natural evolution — the performance of Linux itself is continually improving, as a natural result of the growing demand for glitchless multimedia and efficient handling of performance critical data.
To date, the best that LynxOS and other commercial RTOSes (like QNX) could do was to offer application program interface (API) compatibility. This requires that Linux applications be recompiled to run on LynxOS (or QNX).
LynxOS' ABI compatibility takes this interoperability an important step further, to where an unmodified Linux program's binary image can run directly on LynxOS. For LynuxWorks, which sells both standard Linux and the LynxOS RTOS, the result makes a compelling sales pitch: “if you want real Linux, we'll give you Linux. If you want a hard real-time OS that runs Linux software, we'll give you LynxOS.”
One small step for an RTOS . . .
What LynuxWorks has just demonstrated in terms of Linux ABI compatibility (“the Quake test”), though significant, is but a small step along the path. Providing substantial compatibility with an OS as complex and quickly-evolving as Linux will surely prove a daunting, ongoing challenge. For example, the ability to take advantage of standard Linux device drivers (which often must be linked directly into the Linux kernel) is one of the primary concerns expressed by developers of real-time and embedded systems and devices. Will LynxOS be able to take advantage of unmodified Linux device drivers, GPL or otherwise?
Still, this first LynuxWorks demo of Linux ABI compatibility may well signify the beginning of a process that eventually redefines the entire embedded OS landscape. The move toward Linux as the standard for embedded and real-time OS compatibility is important, in a market where a lack of standards has led to a host of incompatible offerings from a multitude of vendors. Choice and competition are always important in advancing the state of technologies, and in providing satisfactory solutions to customers. The embedded OS market has never lacked either of these attributes (choice and competition) — but what has, until now, been sorely lacking has been the standards through which multiple sources of compatible software could be available.
Then there's the Linux perspective. If LynxOS can give Linux a run for the money in specific embedded applications of sufficient volume, it will encourage an evolution of the capabilities of Linux in the direction of improved embedded and real-time capabilities. That, of course, would be a big win for Linux.
When will the “Linux ABI-compatible” version of LynxOS be available as a finished product? “Soon,” says Singh. How soon? “In the next release of LynxOS.”
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.