Linux 2.6.16 — the “high-end enterprise” release
Mar 23, 2006 — by LinuxDevices Staff — from the LinuxDevices Archive — viewsThe newest Linux kernel offers dozens of features aimed at improved performance in highly available, highly scalable clustered architectures for enterprise, telecom, and database applications. It also includes power management improvements for devices. This guest column by Linux-Watch editor Steven J. Vaughan-Nichols runs down the salient upgrades. Enjoy . . . !
If you wanted to sum up what's new in this latest release of Linux, you could say that it's a Linux for high-end enterprise users. However, this kernel is also the first one to support Toshiba, Sony, and IBM's CELL processor, which is best known as the chip that will power Sony's forthcoming PlayStation 3 game console.
Of course, CELL (Cell Broadband Engine Architecture), a 64-bit PowerPC-derived, multicore chip is meant for more than just games. It's designed from the silicon up to be scalable for use in everything from game consoles to workstations and servers. So, even the CELL support actually fits into the 2.6.16's themes of high-end hardware support.
More easily recognized as an enterprise play is this kernel's support for the second version of Oracle's OCFS2 (Oracle Cluster File System for Linux). With this cluster support, users can get speedy disk support over SANs (Storage Area Networks), or, thanks to its TCP-based messaging system, across Fast or Gigabit Ethernets and cluster nodes or NAS (Network Attached Storage).
The new Linux kernel also has support for Mac OS X's newest file system: HFSX. This is the latest update to Apple's HFS Plus (Hierarchical File System Plus) file system. HFS Plus and its descendents have been the Mac's default file system since Mac OS 8.1. HFSX appeared on Macs beginning with Mac OS X 10.3, Panther.
Other file systems though, which had been talked about making it into Linux, are still optional outsiders. These include Red Hat's GFS (Global File System), another clustering system, and the high-performance, journaling Reiser4 file system.
Continuing with the theme of adding more cluster goodness, the new kernel also supports the TIPC (Transparent Inter Process Communication) protocol, which is used for intra-clustering communication.
This Linux kernel also includes swap migration for clustering and multi-CPU systems that use Non-Uniform Memory Access (NUMA).
NUMA is a concept that we're going to see used more and more often, as both clustered and built-in processors' speeds outstrips memory speed. After all, not all memory is created equal. Generally speaking, the closer memory is to a processor (in terms of access time) the faster the system's overall I/O will go, thus improving all aspects of system performance.
Most of us know that hard drives use cache to store frequently accessed data. Since even the slowest memory's access speed is much faster than even the speediest hard drive, the end result is a much faster system.
The also works for processors and memory, which use small amounts of fast RAM either on the chip itself (L1 or primary cache) or immediately next to the CPU (L2 or secondary cache) to speed up main memory performance in the same way that hard drive cache speeds up disk performance.
NUMA takes cache's basic concept of memory locality and expands on it so that multiprocessor systems can make effective use of not just their local memory but also of memory on different buses, and even memory connected to the processor over a fast network. With NUMA, every processor or group of processors accesses other CPUs' memory. They still have access to their own local memory, of course, but by sharing memory they're much more capable of performing efficient parallel processing and dividing up massively data-intensive tasks into manageable sizes.
Linux has supported NUMA to a degree since the 2.6.0 kernel. With this latest edition, physical memory pages can be moved between NUMA nodes while the process is running through swap memory. In English, this means that the processor can still use the same virtual addresses, thus saving on processor power. The point of this operation goes back to NUMA's caching goal — to place the data that's most likely to be used by the processor closer to it, so that the system's overall memory performance is improved.
Under the hood, this Linux kernel also includes several new system calls. No fewer than 13 of these system calls take a file descriptor/filename pair as an argument instead of a single file name. The point here is to improve the performance of any program that needs to examine or change multiple files on a file-system tree.
You could, of course, always do this with C library calls — almost always Glibc in Linux — but implementing a virtual per-thread current working directory with Glibc was processor-time expensive. So, taking a leaf from OpenSolaris, Linux now has that functionality built-in.
Linux also now has the unshare() system call. With this call, developers can now use a thread model that allows threads to selectively “unshare” any resources that were being shared at the time of their creation.
The main use of unshare is to allow a process to control its shared execution context without creating a new process. This may sound esoteric, but it's widely thought in developer circles that this enhancement will prove very helpful.
For example, on clustered or distributed systems, programs may access all possible file systems from each system in the computer complex (Postscript file). Without unshare, each system might find its own way to mount all the other file systems. You can probably see where this is going. You can end up with a network of “spaghetti” drive mounts, in which the failure of any single desktop can bring down the entire network's file storage.
With ushare, setting up a private name space, in which each machine keeps its own copy of the drive map system, becomes much easier. This, in turn, makes the entire distributed system far more stable.
There are also many other possible uses for ushare. While end-users won't see it, I suspect ushare will quickly become popular with Linux programmers.
Last and simplest, but not the least, Linux now has improved power management support for many devices and subsystems.
As I said at the beginning, to sum it all up, this is not a release that will excite many end-users, but for developers it's a different story. In particular, programmers working with clusters and distributed applications will find a great deal to like in Linux 2.6.16.
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.