Notice: Undefined index: order_next_posts in /nas/content/live/gadgetmag/wp-content/plugins/smart-scroll-posts/smart-scroll-posts.php on line 194

Notice: Undefined index: post_link_target in /nas/content/live/gadgetmag/wp-content/plugins/smart-scroll-posts/smart-scroll-posts.php on line 195

Notice: Undefined index: posts_featured_size in /nas/content/live/gadgetmag/wp-content/plugins/smart-scroll-posts/smart-scroll-posts.php on line 196

Developing Linux kernel 3.13 – The kernel column

Jon Masters looks back upon development in the Linux kernel community throughout 2013 and covers ongoing work toward the next releases of the Linux kernel

[Ed’s note – This article was originally published in Linux User & Developer 135, when 3.13 was still in development]

Linus Torvalds announced the latest Release Candidate (RC) 3.13 series Linux kernel, saying: “I delayed this a couple of days to get back to my normal Sunday release schedule, but I’m not entirely happy with the result. Things aren’t calming down the way they should be [for this stage in a release cycle], and -rc4 is bigger than previous RCs. And I don’t think I can just blame the two extra days.” He pre-announced his future “grumpiness” at anyone who sends him unnecessary patches for 3.13 at this stage.

We should begin 2014 with yet another new kernel, hopefully even better than all of the many (equally excellent) kernels that have gone before. 3.13 will include novel new features, such as in-kernel support for ARM’s ‘big.LITTLE’ AMP (asynchronous multiprocessing) architecture that allows CPUs built from ‘big’ and ‘little’ cores to dynamically schedule work according to the runtime power needs and energy constraints of the system (this is already used in many shipping mobile phones and other devices to great effect), reworking of existing support for packet filtering in the ‘new’ nftables code (that has been many years in the making), and countless other tweaks under the covers (ARM gets support for big- endian operation just as PowerPC gains support for little-endian in the same release). With an eye toward the future, it would seem that now is as good a time as any to reminisce upon the past year…

The year that was 2013

2013 began way back when Linux 3.8 was the latest thing since… Linux 3.7. The 3.7 kernel had been no slouch, adding support for the forward- looking AArch64 64-bit ARM architecture, among thousands of other improvements. And so it was that the year began with the development merge window for 3.8 closing. A core new feature merged therein was support for Transparent Huge Zero Pages, which build upon existing support for Transparent Huge Pages but handle pages (the minimal unit of memory accounting within the kernel) that are filled with zeros – very popular with virtual machines right after they have booted, especially Windows- based machines, since Windows explicitly zeros them.

February saw the final days of Linux 3.8 development. Linus produced some statistics showing that the most popular day (historically) for new kernel releases is on a Sunday. He in fact would go out of his way later in the year to get back onto the ‘Sunday schedule’ after temporarily switching to Fridays. We were also reminded (as also at several other times throughout the year) how fragile life is, and how important family and friends can be. Alan Cox, one-time ‘Linux number two’, author of the original SMP (multiprocessor) support, and still very important contributor to the kernel, announced that he was “leaving the Linux world and Intel for a bit” for family reasons. We are fortunate that he was able to return (on a limited basis) later in the year.

March featured new architecture support in the form of ARC, a synthesizable RISC architecture from chip design tooling house Synopsys. ARC is configurable and is intended for use in DSP-like designs where customers (developers of chips using ARC) might want to insert custom instruction into the pipeline. Intel’s PowerClamp driver landed, adding the ability for a system to inject deliberate idle states to reduce energy consumption in the case that a rack-level multi-node power budget must not be exceeded. David Howells announced that “the end is nigh!” with regard to his UAPI (user-space API) work, which was a multi-year effort to clean up the Linux user-space header files.

April began with the return of Al Viro to fighting form (following a serious health issue and unfortunate hospitalisation), with Linus crediting him for “virtually riding to the rescue on a white horse” to fix a gnarly VFS (virtual file system) bug in 3.9-rc5. Also this month, Arnd Bergmann proposed removing support for the very much antiquated PReP platform, an early standardised PowerPC platform that has long since been replaced by the descendants of CHRP (Common Hardware Reference Platform).

May offered a new Linux kernel. 3.9 featured support for semi-transparent caching of I/O onto fast SSD devices via the new ‘dm-cache’ device mapper target, while Frederic Weisbecker’s ‘nohz’ patches were queued up for 3.10 merge. The latter removed the need for a timer ‘tick’ interrupt on CPUs running only one active task, and under certain conditions, including the need for the ‘boot’ processor (processor number zero, in general) to keep its timer tick running for housekeeping (scheduling etc) purposes.

June featured an awesome patch series from Will Deacon (who has a future career in stand-up comedy, if the Linux business were to tank for some reason) entitled ‘Remove any correlation between IPC and BogoMips value’. The ‘BogoMips’ value reported by Linux systems is simply a calculation (of the idle loop, during bootup) of how quickly a given processor can do nothing. That is, how quickly calls to no-ops can complete. Many users enjoy quoting BogoMips values, but on modern systems they mean little, and on some systems (especially ARM devices) they mean even less with the introduction of – for example – ARM’s Architected Timers. Newer ARM devices might run at many GHz but report only a few hundred MHz due to the rate of the Architected Timer. Will’s patch included various modes to make BogoMips reflect either reality or marketing desires, including a config option briefly considered to be named CONFIG_MARKETING.

July brought forth another shiny new kernel. Linux 3.10 was released, and it included support for both Xen- and KVM-based virtualisation on 64-bit ARM systems. Typically, July and August are fairly quiet months, since they are mid- conference season, and also when people take summer holidays. August did, however, bring the (eventual) merging of the Lustre distributed file system, which has been living independently of the kernel for many years. Lustre joined other great new features in the 3.11 development kernel, which was named ‘Linux for Workgroups’ in honour of the Microsoft Windows 3.11 release ‘Windows for Workgroups’. Linus had wanted to launch 3.11 on the 22nd anniversary of his original ‘hello everybody’ introductory message announcing Linux, but instead settled for a late version RC instead. The final release of Linux 3.11 was not too soon thereafter.

September might as well have been named ‘memory management month’, with a lot of focus on the virtual memory subsystem feeding into Linux 3.12 development, in particular of NUMA (Non-Uniform Memory Access – the kind used in larger multiprocessors where memory is very much distributed amongst CPUs, and is still seen by all CPUs equally, but with differing performance). Among the non-NUMA work, Srinvas Pandruvada (Intel) posted support for a new ‘powercap’ driver used to help with thermal and power budgets on a single CPU chip (and so in some ways complementary to ‘PowerClamp’).

October included one of Linus’s now famous ‘PDX kernel releases’ (from the Portland, Oregon, airport), a new system call proposal from Miklos Szeredi in which renameat2 would solve the problem of atomically swapping two directory entries, among others. Stephen Rothwell, the author of linux-next, took a three-week break in October, which led to Thierry Reding (unprompted) deciding to step up and help cover for Stephen during the break.

November rounded out the year with a shiny new Linux 3.12 kernel which, as reported last month, includes support for automatic GPU switching from one GPU (in a laptop, for example) to another without restarting the desktop. The Linux 3.13 development cycle began with merging of Intel’s powercap driver, the new ‘nftables’ packet filter, and talk of an eventual Linux 4.0.

That’s all for this issue. Next time, we look ahead and make some predictions for the year ahead. Stay tuned.