Cover V10, I13
Article

jun_sup2001.tar


Linux Affinity

Richard Ferri

The success of Linux and open source over the recent months has made many of the traditionally high-end UNIX vendors take notice. IBM, Sun Microsystems, and Hewlett-Packard have all announced steps to embrace Linux on their traditionally high-end, enterprise UNIX operating systems, AIX, Solaris, and HP-UX, respectively. All three companies have either provided a method of porting applications from Linux to their operating system or ported a number of Linux applications and made them available to the public, or both. What interest do these time tested, UNIX vendors have in this upstart Linux? After all, it's clear to those who follow UNIX that Linux is the least mature operating system of the four. Why would these lofty distributors care about embracing Linux?

Strategic Approaches to Linux Affinity

If you look at the explosion of the open source community, examine the curriculum among college and graduate students, and check out various publishers' book offerings, the signs are clearly there -- Linux is coming. With its acceptance by the major UNIX vendors, one might even say that Linux has arrived. Given the number of talented developers working in Linux and open source, the number of machines now installed with Linux, the skill set that new programmers coming out of college have acquired, IBM, Sun, and HP have all realized that Linux skills and numbers of devotees are growing at a faster rate than for their respective operating systems. So, why not accommodate these new Linux devotees with the best of both worlds? They can have the look and feel of Linux, and their favorite Linux applications, on more mature operating systems like AIX, Solaris, and HP-UX.

The three vendors have taken similar approaches to Linux affinity. HP-UX provides libhplx, which is a library that contains about 200 Linux-compatible APIs, related file headers, and their sources. This library is a set of APIs not available with HP-UX, taken from GNU 2.1.3, and is available under the GNU Public License (GPL). At LinuxWorld Expo in February, HP announced that they will be shipping the open source Ximian GNOME Desktop as their default desktop for HP-UX workstations. HP also announced they will be using GNOME as the open standard to provide a common desktop for both their HP-UX and HP Linux workstations. Similarly, Sun has announced that it will be using a GNOME-based desktop for Solaris. Gnome provides Solaris with programming libraries, and access to Sun's Star Office desktop office suite. The intent is that the user will not be able to tell if he's running RedHat Linux or Solaris under the hood (ZDNet). As the result of collaboration between Sun and the open source lxrun project, the lxrun utility allows Linux binaries to run without modification on Solaris Operating Environment on Intel platforms. lxrun is a software layer that sits between Solaris and the Linux Intel binary executable and remaps system calls "on the fly" allowing them to run unmodified on Solaris (http://www.sun.com). lxrun appears to provide a robust environment, supporting such diverse applications as WordPerfect, GNOME, GIMP, and Quake III.

IBM has made a big commitment to Linux affinity with its AIX operating system. After all, the "L" in the AIX 5L release due out later this year is for "Linux". Many applications developed on and for Linux can run on AIX 5L with a simple recompilation of the source code, allowing customers to combine Linux applications with the advanced scalability and availability features of AIX. Linux affinity on AIX includes Linux application source compatibility, compliance with emerging Linux standards, and a GNU/Linux build-time environment with tools and utilities that combine to facilitate the development and deployment of Linux applications on AIX 5L (http://www.ibm.com/servers/aix/overview/linux.html). Having given a flavor of what is going on in the industry with regard to Linux affinity, I will explore how IBM is going about providing Linux affinity in AIX.

AIX/Linux Affinity

IBM plans to provide Linux affinity in two phases. The first phase is the release of the AIX Toolbox for Linux Applications, available at http://www.ibm.com/aix. The AIX Toolbox for Linux Applications provides GNU and other commonly used tools for recompiling Linux applications on AIX. The Toolbox provides an API approach for Linux application affinity. This approach does require a recompile of the Linux application for AIX using the traditional AIX APIs and the Toolbox APIs. It does not provide binary compatibility -- no attempt is made to run Linux applications directly on AIX. Given that the Linux applications are completely recompiled with the AIX APIs and Toolbox, these applications have access to the reliability, scalability, and availability traditionally associated with AIX (see Hebert whitepaper in references section).

The second phase of the Linux affinity plan is an integration of Linux APIs and header files into AIX 5L Version 5.1. Since AIX itself was developed to UNIX industry standards, there is inherently a high degree of compatibility between AIX and Linux. Many Linux applications can be recompiled and run on AIX 4.3.3 and AIX 5L Version 5.0 today, using the AIX Toolbox. AIX 5L Version 5.1 plans to add greater compatibility by adding additional API support for functions that are not presently similar between Linux and AIX (Hebert).

API versus ABI issues

The two major methods of providing affinity for applications running on two different opearating systems are the API (Application Programming Interface) and the ABI (Application Binary Interface) methods. In the API approach, programs are ported to a target operating system (AIX in this case) from a source operating system (Linux). These applications should port virtually unchanged -- this is because the headers and library calls that these applications rely on have been previously ported to the target operating system. These ported library routines will result in different operating system service calls on the target system than they did on the source system. However, the underlying system service calls are completely hidden from the application developer. To the application, the library invocation remains exactly the same. In the ABI approach, binaries are copied directly from the source system to the target system. These binaries can then be executed on the target system in an "emulation mode". There are some advantages and disadvatages of using the API versus the ABI affinity approaches.

Recompilation

Clearly, the main disadvantage of the API approach is that each application must be recompiled when brought over from Linux to AIX. However, since the port has to be done only once, and the set of APIs provided in AIX is rather complete, this may not be all that great a disadvantage. A clear advantage of taking the API approach is that once an application is recompiled for AIX, it becomes an AIX application and inherits all the stability that AIX provides.

Performance

The issue of performance using the ABI approach is a touchy one. One would think that the API approach would outperform the ABI approach. This is because a program ported using the API approach is recompiled to use the native operating system calls, instead of running in emulation mode. However, open source projects that provide commands like lxrun claim that the performance hit is negligible, in fact, it may not even be measurable. They prefer not to call lxrun an emulator at all, stating that it's really just remapping a few system calls, and the rest of the time it remains undetectable. Systems calls, after all, are used for things like reading and writing files, displaying information to the screen, and accessing the network. System calls are not used in computation. Since the overhead that most I/O requires is far greater than the amount of time it takes to remap the system calls, the performance degradation in using the ABI approach instead of the API approach may be slight or none at all. Admittedly, there will be some noticeable slow down when running graphics-intensive applications, such as X Windows.

Application Availability

Using the API approach, IBM has ported most of the major Linux tools to AIX, including some GNU Tools, such as Gcc Compiler, Gdb Debugger, Emacs, Automake, Autoconf, Libtool, and hundreds of other tools, including:

  • Application Development -- gcc, g++, gdb, rpm, cvs, automake, autoconf, libtool, bison, flex, gettext
  • Desktop Environments -- Gnome and KDE
  • GNU Base Utilities -- gawk, m4, indent, sed, tar, diffutils, fileutils, findutils, textutils, grep, sh-utils
  • Programming Languages -- Guile, Python, Tcl/Tk, Rep-gtk
  • System Utilities -- emacs, vim, bzip2, gzip, git, elm, ncftp, rsync, wget, lsof, less, samba, zip, unzip, zoo
  • Graphics Applications -- ImageMagick, transfig, xfig, xpdf, ghostscript, gv, mpage
  • Libraries -- ncurses, readline, libtiff, libpng, libjpeg, slang, fnlib, db, gtk+, qt
  • System Shells -- bash2, tcsh, zsh
  • Window Managers -- Enlightenment, Sawfish
Architectures

One of the reasons why the ABI method works is that it requires the underlying architecture of the source and target machines to be the same. So, when an application binary is copied from Linux to Solaris, and executed with lxrun, it requires the same IA-32 architecture to be present on both source and target machines. lxrun merely executes all the instructions in native mode until it gets to a system call and remaps the system calls for the target operating system. This approach does not apply when porting across architectures, however. There is no easy way to port an IA-32 Linux application to say, a Sparc Station running Solaris unless something fairly exotic like a machine-level emulator is employed. Using the API approach, porting across architectures is fairly straightforward, providing all the standard interfaces are maintained. This means that a Linux application developed for an IA-32 platform and compiled using the GNU tools should port to a RS/6000, PowerPC, or IA-64 machine running AIX.

Summary

By porting many standard Linux library routines and headers to AIX, IBM has attempted to make AIX an operating system friendly to Linux developers. They have made it friendly to Linux end users by porting many favorite desktop environments and applications to AIX. While IBM's API approach to AIX/Linux affinity does require more work on the part of the porter than an ABI approach, a recompile is a relatively small price to pay to gain the stability and reliability inherent in AIX. With AIX 4.3.3, and AIX 5L 5.0, IBM has demonstrated its commitment to Linux applications and users on AIX; with AIX 5L 5.1, IBM will further demonstrate that long-term commitment.

Acknowledgments and Bibliography

Much of the background information used in this article was taken from corporate and news Web sites. The sites used as background material are:

http://www.hp.com
http://www.ibm.com/aix
http://www.devresource.hp.com/LPK/libhplx.html
http://www.linux.hp.com
http://www.linux.hp.com/news_events/ximian.html
http://www.sun.com/linux
http://www.zdnet.com
http://www.ugcs.caltech.edu/~steven/lxrun/lxrun-FAQ.html
http://www.ibm.com/servers/aix/overview/linux.html
http://www.ibm.com/servers/aix/news/aix_affinity.html
I want to acknowledge Dr. David W. Mehaffy of IBM, Austin, Texas, for his assistance in correcting this text. Much of the information on AIX/Linux affinity was taken from a technical whitepaper by Ray Hebert of IBM, Austin, Texas. The paper is available at:

http://www.ibm.com/servers/aix/products/aixos/linux/affinity_linux.pdf
Richard Ferri is a Senior Programmer in the IBM Linux Technology Center in Poughkeepsie, NY. He works on open source projects like LUI and OSCAR, an open source clustering tool for high-performance computing. His previous projects have included network installation and diagnostics for the RS/6000 SP, and systems management code for AIX/ESA. He received a BA in English from Georgetown University many years ago, and now lives in cramped quarters with his wife Pat, three teenaged sons, and three dogs of various sizes and suspect lineage.