The Bullet Points: Linux 2.4

A look at what's new in the next kernel release.
Wake One

These big changes for Linux have all been of great advantage to desktop users, but Linux 2.4 will include many advantages to those who are using more traditional Linux (server) boxes. The change which has garnered the most media attention is wake one.

At heart, wake one is a simple change meant to counteract the “stampede effect” seen under certain conditions on busy web servers. Previously, when a number of daemons or other processes were waiting for something to happen over the network, they would all sit idle and then all spring into action at the first sign of communication. Unfortunately, for every web connection, only one daemon can be talking and so most of these lose out and go back to waiting and hoping that they're next. Linux 2.4 has integrated changes which basically wake one of the processes instead of all of them. This results in less unnecessary thrashing of daemon processes and a faster system overall.

Simple? Maybe. In order to support this, Linux 2.4 required a complete rewrite of wait queues and other bits. In addition to solving this problem, Linux 2.4 queues will be more robust and scale better to multiple processors. Just to get an idea of how important Linus felt this change was to Linux, it should be noted that this was the first new feature in Linux 2.3 (the development version, which is to become Linux 2.4).

khttpd: the Kernel Web Server

Also on the server front, Linux 2.4 includes support for a rather revolutionary idea: a web server actually integrated into the kernel. The advantages of this include a faster response time from the server, because it can work directly at the caching layer and doesn't need to make any network calls to user space. However, this change is not meant as a general solution to web hosting; it can serve only files, not CGIs, and it has been designed to be as simple as humanly possible. Any requests it can't handle can be passed to user-space, where Apache or another waiting web daemon can snatch it up and serve it. This double-decker style of web hosting has already been observed to increase server performance in synthetic load environments.

Many Linux users have actually spoken out against this feature, citing the kernel as no place for a web server. My personal feeling is that serving files in this manner is no different than any other in-kernel file server, and it actually does make sense in cases where performance is the true “key” issue and simplicity can be assured. Currently, only knfsd actually does file serving from the kernel, but the precedent is there. I don't believe we should, for instance, serve FTP from the kernel or integrate a DNS server into the kernel, but if there is a good advantage to doing something this way, then it should be an option.

Raw Devices

Another feature for servers that Linux 2.4 will support is so-called “raw” devices. Raw devices are special device nodes which can be associated with normal block devices to provide direct and low-level access to devices. This can be used, for example, by databases that think they can handle their own caching better than the kernel. The jury is still out on how useful this feature will actually be, rather than how useful its proponents say it is, but this is nonetheless another big step toward providing “commercial grade” UNIX features under Linux.

This feature has long been requested by database developers and others who are used to the raw features of other UNIX systems for their server applications. I don't see much need for bypassing caching, except in the case where data integrity is paramount and loss of performance is not an issue. But maybe the feature just isn't for me, and makes perfect sense to a particular type of application.


Just as Windows and Macintoshes have their own protocols and methodologies for accessing shared drives, UNIX systems have NFS, the network file system. Linux has long supported NFS sharing and mounting in all of its flavors. Linux can even boot (without initrd) off such a shared drive. Linux 2.4 adds the oft-requested support for the latest version of the NFS protocol, NFSv3, which includes many improvements over the old system as well as ensuring Linux will be compatible with the commercial UNIX systems of the next millennium.

I believe both servers and desktop users will benefit from this change. Having a more robust NFS layer that supports the latest protocols and enhancements is always a win, and many desktop users who share files may be able to take advantage of the new features in the new NFS.