Ashton Mills24 August 2006, 6:37 AM
It's a tough job, but someone has to test out the bleeding-edge hacks to the Linux kernel that can give you dramatically increased speed. But you don't actually have to be a command line guru to be able to take advantage of these...
Vanilla is boring.
Though it is, usually, at least stable. One of the inherent beauties of open-source software -- philosophical, developmental, and future-of-the-human-race issues aside -- is simply that you can play with it.
And there is no more an exciting area to play in than the Linux kernel.
Official releases are designed to be progressive, generally stable, updates -- they need to be, as they form the basis of distribution released kernels.
But new features, performance improvements, new hardware support and bug fixes don't just magically appear at each new version.
Many of them have been around much longer than their public debut would suggest -- usually, they dance their evolution on the machines of those who like to play with cutting-edge super-fast may-break-everything patches.
Machines just like mine, for instance!
In fact, while some may call it crazy to play with such kernels (come on, you don't install them on a production system *cough*) they provide an insight into where kernel development is going and -- if the patches mature and become stable -- what future official releases will see.
For the most part, feedback from those running these kernels is exactly what helps the development of these new patches along, sometimes with the aim of inclusion in mainline.
What patches am I talking about? There's loads! And fortunately, passionate users like me and you sometimes seek out the more interesting, pertinent, and potent patches and roll them up into a single, suck-it-and-see kernel for all to enjoy. Here's a few I've played with for a while now:
These are just a sample of kernels you can try. You'll notice they are generally based on '-mm' (Andrew Morton) and '-ck' (Australia's own Con Kolivas) which are, in themselves, a series of patches hand picked by the aforementioned kernel developers.
These are then added to with further patches hand-picked (frequently from the Linux Kernel Mailing List by the above patchset authors.
Generally, due its roll-your-own nature, a lot of these patchsets are released with Gentoo ebuilds, but all of the above include inistructions for installing these kernels manually as well.
While there's always a wide range of tweaks with each set coming from, quite frequently, dozens of patches there are a few interesting developments making their way through at the moment. These include:
Nick-Piggins' Lockless pagecache - improved performance and scalability by providing lockless pagecache operations.
Staircase CPU scheduler - a new and improved scheduler over the default Ingosched.
Reiser4 - Hans Resier's latest super-fast filesystem.
Adaptive file read-ahead - a more advanced version of the kernel's read-ahead algorithm.
Layer 7 - packet filtering for detecting layer 7 applications (i.e, P2P software packets et al.)
Adjustable timer frequencies - a value of '864' is being pushed as perfect for desktops to provide a balance between throughput and responsiveness.
And this is just a snippet of some of the new features you can find. Don't be afraid to try some of the above kernels -- even just flicking through the 'make menuconfig' options can be a revealing insight.
Finally, though it's always a forum of much debate, those patchsets that are stable can frequently offer a noticeable performance improvement for your system.
Just remember to ensure you include all the required modules your distribution expects, or you may get unwanted behaviour that isn't a result of the kernel itself.
Naturally, the best way to do this is to extract the kernel sources for the kernel you are using on your distribution, copy across its '.config' file, and run 'make oldconfig' in the new kernel tree.
This is all getting beyond the scope of this piece however, but if there's enough interest I can write a short guide for Ubuntu by way of example.