Linux Kernel 3.3
Linux 3.3 fixes problems that resulted in freezes when writing to slow disks. Hot replace support for software RAIDs removes the element of risk when hot swapping disks in RAID arrays. The network subsystem now includes teaming support, a virtual switch and infrastructure for avoiding “bufferbloat”.
After slightly more than ten weeks after the release of Linux 3.2, Linus Torvalds has released Linux 3.3. The scope of changes in the new kernel version, earmarked for use in Fedora 16 and Fedora 17 along with other distributions, is still much as it ever is, with some changes more relevant to administrators running large data centres, others more likely to interest users running Linux on a desktop or laptop.
The Intel graphics driver in Linux 3.3 has been modified to avoid the deepest sleep state offered by Intel’s RC6 GPU power saving feature. As a result, this feature should finally work reliably with the graphics cores used in Intel’s current Sandy Bridge generation of processors, where it saves between 3 and 5 watts when idling. Nevertheless, RC6 remains deactivated by default on Sandy Bridge CPUs in Linux 3.3, and needs to be activated manually using the kernel argument i915.i915_enable_rc6=1.
From 3.3, the nouveau DRM/KMS driver for NVIDIA graphics chips will support audio output via HDMI on NVA3 (aka GT215) and later graphics chips (1, 2, 3, 4). These are used on graphics cards such as the GeForce GT 240, 320 and 335M and their successors. The nouveau driver in Linux 3.3 now supports the GPU code-named NVD9, which is used on cards including the GeForce GT 520, 520M, 520MX and GeForce 410M.
The Radeon DRM/KMS driver for AMD graphics chips now supports HDMI audio output on Evergreen chips, frequently, but not always, found on Radeon HD 5000 series GPUs; the code was developed with the help of reverse engineering and it remains to be seen how well it works in the field. The DRM/KMS graphics driver for Intel’s GMA500, GMA600 and GMA3600 graphics cores, developed by Intel employee and kernel veteran Alan Cox, has been merged into the DRM subsystem (1, 2, 3, 4, 5 and others). The driver had previously spent some months in the staging area, the repository for code still needing a bit of work. The driver supports the graphics core in Intel’s US15W embedded chipset, which is also known as Poulsbo.
The kernel developers have added an Ethernet teaming driver that combines multiple Ethernet devices into one virtual device (link aggregation/802.1AX). Similar to the existing bonding driver, this virtual network device can use a round-robin technique to share network load across multiple ports; alternatively, a designated “active backup” port can take over if there are problems with the primary network connection.
Linux 3.3 includes the kernel components that are required for the Open vSwitch. This multi-layer virtual switch can operate on layers 2, 3 or 4 and was specially developed for virtualisation environments. “Dynamic Queue Limits” and “Byte Queue Limits” allow the kernel to control how much data can accumulate in a send queue. The aim of these is to reduce the “bufferbloat” problem that was mentioned in a previous Kernel Log and is caused by excessive data buffering in networking hardware.
The kernel now includes a driver for NVMe – NVM (Non-Volatile Memory) Express (1, 2 and others). This is a standard interface defined a year ago for access to SSDs connected via PCI or PCIe; SATA Express, designated successor of SATA 6G, reportedly will also use concepts from NVMe. The MD code responsible for software RAIDs gained functions (1, 2 and others) to copy data currently on one storage device to another so that the first can later be removed. This “hot replace” reduces the danger of losing data when changing disks that are part of the RAID, since it avoids the rebuild (which creates a new version of the redundant data on the new data volume) that has previously been necessary for such an exchange.
For Linux 3.3, the kernel developers have made a number of changes and additions to the Btrfs balancing and re-striping code, which rearranges data within Btrfs volumes (1, 2, 3, 4, 5, 6); these changes will allow RAIDs created with Btrfs to migrate – for example, from a RAID 1 into a RAID 10. The new code also allows this kind of migration to be paused, cancelled and restarted after a crash. The Ext4 code gained a new mechanism for resizing Ext4 filesystems (1 and others). With this, it is not mainly a user space program but the kernel itself that is primarily concerned with resizing; this is supposed to speed up the resizing process quite a lot in some situations.
As anticipated, a number of Android specific drivers have now entered the staging area, including some drivers previously merged into the staging area, but later removed because they weren’t being maintained (1, 2, 3, 4, 5 and others). These changes mean that the kernel should now contain everything required to boot an Android userland, but is still missing wake lock code or equivalent, which is required to achieve decent battery life. The network, HID, and mouse drivers for Microsoft’s Hyper-V virtualisation platform, development of which has been driven by the software giant itself, are now, after several years in the staging area, sufficiently mature to have made the leap into the relevant subsystems.
The driver for Cirrus HDA codecs now supports the Cirrus Logic 4213. Hardware monitoring driver it87 now supports the IT8728F chip used on some motherboards. The driver for ALPS touchpads now supports touchpads that use versions 3 and 4 of an ALPS protocol.
A number of changes in Linux 3.3 are intended to take care of various problems that can, in certain situations, cause systems to temporarily stall when the kernel is writing large amounts of data to a slow disk (such as a USB flash drive). Linux 3.2 already fixed some of these types of issues where the writeback code was to blame. For 3.3, there was one more change in this area, which in some special circumstances can improve write performance of the NTFS-3G Fuse driver. Several other changes fix stall problems where the memory compaction in combination with the transparent hugepages (THP) were the root of the problem. Kernel developers have also included some changes in Linux 3.3 called “memory control group naturalisation patches” which should significantly reduce management for the cgroup controller “memory” (1, 2, 3 and others). This will reduce the overhead of the controller to regulate RAM use; some distributions have enabled this by default.
Thanks to a few changes in the kernel code for ASPM (active state power management), Linux 3.3 now uses PCIe power conservation technology even if there are certain inconsistencies between how the BIOS configures the hardware and what the BIOS reports to the kernel about the support for ASPM. A few weeks after this was changed in Linux 3.3, kernel developers also added it to the 3.0.20 and 3.2.5 kernel versions released in February. Another new feature in Linux 3.3 is basic support for ACPI 5.0, which only recently became an official specification and is therefore not yet seen on any systems (1, 2, 3 and others). The ARM code now uses the large physical address extension (LPAE) (1, 2, 3 and others), with which operating systems on 32-bit ARM v7 cores offering LPAE can access more than 4GB of RAM. The code for the S390 architecture can now access up to 64TB of RAM; previously, the limit was 3.8TB.
Summing up 3.3
While Linux 3.2 offered a slightly greater number of changes than previous versions, the developers have returned to their usual number with Linux 3.3. Numerous changes to the network subsystem – teaming, Open vSwitch, buffer bloat prevention and various others – demonstrate that there is still room for improvement even in well-established areas such as the network stack. Like the new features for resizing Ext4 filesystems and the hot replace support for the software RAID code, however, these new additions are mainly relevant for the administrators of large data centres.
Home users are most likely to benefit from the numerous new and improved drivers. In Linux 3.3, the kernel developers may finally have managed to fix all the major issues that previously caused considerable system disruption when the kernel was writing to slow storage devices – on the PC workstation that was used to write these lines, the problem has disappeared with Linux 3.3, at least.
Kernel trends for Linux 3.4
Directly following the release of Linux 3.3, the first, usually two-week long merge window of the Linux kernel development cycle commences, during which the kernel developers incorporate the many changes for the next version of the kernel into the main development branch. Numerous changes have already been prepared for this first phase of the next development cycle.
For instance, the Hyper-V storage drivers are scheduled to leave the staging area. As on various occasions in the past few months, there is now further evidence that the Uprobes userspace tracing solution may be integrated in the next Linux version; however, this time indications are slightly more defined. The well-known kernel developer Peter Zijlstra, as well as Ingo Molnar, the developer who maintains the tracing and performance monitoring code, have both looked at the Uprobes patches; after a few modifications, Molnar has added several patches to one of his development branches incorporated into linux-next, the kernel tree in which the kernel hackers are co-ordinating their changes for Linux 3.4 (1, 2, 3). This branch also contains the patches to implement the x32 ABI, which allows users to benefit from the advantages of 64-bit x86 processors while avoiding the overhead that comes with 64-bit operation.
As usual, the Kernel Log will summarise these and other developments in the Linux kernel field – including new point releases of the stable kernel series (3.3.y), which should, over the next few weeks, fix a few bugs that testers missed during development or which hackers could not fix in time for the release of Linux 3.3. The Kernel Log in The H Open will, as usual, be reporting on the major changes integrated into the next kernel version in a “Coming in 3.4” mini-series. A release of 3.4 in mid or late May seems likely at this point in time. A detailed summary of the major changes in 3.4 will then be published on The H Open in a Kernel Log like this one.
Linux 3.3 download
The new Linux kernel can be downloaded on Kernel.org and soon should become available from the worldwide network of servers that mirror the web site.
The source code is offered as tar archive compressed with Gzip, Bzip2, or XZ. The authenticity of the uncompressed tarball can be verified with a signature file that is shipped alongside it – for example, the process for Linux 3.1 would be performed with commands like this:
[[email protected] tmp]$ wget –quiet
[[email protected] tmp]$ xz -d linux-3.1.tar.xz
[[email protected] tmp]$ gpg –verify linux-3.1.tar.sign
gpg: Signature made Mon Oct 24 09:17:58 2011 CEST using RSA key ID 00411886
gpg: Good signature from “Linus Torvalds <[email protected]>”
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886
The key used for signing by Torvalds was created only a few months ago, but some known kernel developers have signed it, so there is every indication that this key is authentic.
Content credit: mp3skulls