The Linux kernel column #89
Last month saw the opening and subsequent closing of the 2.6.35 kernel’s merge window, the period of time during which all of the exciting new features that have been waiting in the wings (and in linux-next nightly kernels provided by Stephen Rothwell) are considered for merging into the official ‘mainline’ kernel source tree by Linus Torvalds…
Last month saw the opening and subsequent closing of the 2.6.35 kernel’s merge window, the period of time during which all of the exciting new features that have been waiting in the wings (and in linux-next nightly kernels provided by Stephen Rothwell) are considered for merging into the official ‘mainline’ kernel source tree by Linus Torvalds. Recent releases have often added a new file system (or perhaps two), but 2.6.35 does not add any new file systems. It does add many other new features, including support for profiling virtual machines from the host machine using ‘kvm perf’, the KDB in-kernel debugger that has augmented the existing KGDB support for remote debugging, the memory compaction patches, and memory hotplug support in the SLAB memory allocator.
A number of other features were of course not added in this release, including the ‘suspend blockers’ from Google’s Android that have been debated heavily on the LKML (Linux Kernel Mailing List) over the past month. Overall, a good set of features and accompanying discussion are on their way to a solid release. “The bulk should be there. And please, let’s try to make the merge window mean something this time – don’t send me any new pull requests unless they are for real regressions for major bugs, okay?” stated Linus Torvalds, on 2.6.35.
Linus Torvalds, continuing in his quest to reduce the post-merge window churn that traditionally saw large numbers of late and last-minute patches flying onto mailing lists, reminded everyone ahead of time that he would be strict in enforcing that only bug (and also regression) fixes, as well as special exceptions, would be taken in after the 2.6.35 merge window closed. That was signalled with the release of 2.6.35-rc1, which Linus introduced almost biblically: “and thus endeth the merge window”. He included a number of useful statistics alongside the release, such as the fact that it contained around 8,500 individual code ‘commits’ (units of source code change typically encompassing a few lines of source, perhaps spread between several files) and that there were about a thousand individual developers involved this time. He also added, in the subsequent rc2 update, that his kids were soon getting out of school for the summer and that he might be busy for a while, so he had an additional reason to not want to see horrible post-merge window breakage.
The new features in 2.6.35 are, of course, typically many and varied. Among them are the memory compaction patches from Mel Gorman that could perhaps also be described as providing support for memory defragmentation (and in fact, briefly, were so). The code here literally attempts to reorganise existing physical memory pages such that they are contiguous and such that free memory within a zone (region of memory) exists mostly toward the end. This avoids the slow physical page fragmentation that over time can make it hard for the kernel to find large regions (orders) of physically contiguous memory. Of course, user applications run in virtual memory wherein the kernel can simply manipulate some page tables that specify their mapping onto the physical pages of RAM, so memory compaction isn’t intended to benefit user applications very directly. It is instead intended for uses such as finding large regions of DMA-safe physical memory that PCI hardware can access directly since such hardware devices do not generally (IO-MMU specifics excepted) have the luxury of using the CPU’s page tables directly.
Turn the page for more including: KMV, Mauro Carvalho Chehab and Android’s suspend blocksers…