Labs-Eye View: The Linux 2.4 Kernel
Its been a rocky road for the Linux 2.4 kernel, which originally used a memory management system that was significantly more intricate than the one used in Linux 2.2. The new design hid a number of bugs that have proved hard to remove. The worst problems have been for users running heavy workloads that use a lot of virtual memory. In these cases, the memory manager can start swapping continuously, causing the operating system to be unresponsive for as long as several minutes. In an amazing feat of low-level coding, developer Andrea Arcangeli replaced the entire memory manager with a new design, one that is much simpler than before and that was accepted by Linus Torvalds into the Linux kernel. Theres been a storm of benchmarking since then, coupled with rapid improvements from both Arcangeli and Rik van Riel, the main developer of the original 2.4 memory manager, as each competes to create the best code. Benchmark results have been going both ways, but evidence is mounting that the simpler design is at least as fast as the code it replaces, more stable, more consistent under load and easier to fix.