Linux Weather Forecast
Welcome to the Linux Weather Forecast
This page is an attempt to track ongoing developments in the Linux development community that have a good chance of appearing in a mainline kernel and/or major distributions sometime in the near future. Your "chief meteorologist" is Jonathan Corbet, Executive Editor at LWN.net. If you have suggestions on improving the forecast (and particularly if you have a project or patchset that you think should be tracked), please add your comments to the Discussion page. There's a blog that reports on the main changes to the forecast. You can view it directly or use a feed reader to subscribe to the blog feed. You can also subscribe directly to the changes feed for this page to see feed all forecast edits.
Current conditions: the 3.13 kernel was released on January 19. There are quite a few major new features in this release, including:
- The nftables packet filtering engine. Nftables replaces the kernel's existing firewall implementations (all four of them) with a single virtual machine-based system. It allows for more flexibility, including extensive user-space optimization of firewall configurations, while simplifying the kernel code and improving performance. Nftables will exist alongside the existing firewall code until it is clear that the latter can be replaced without breaking existing firewall setups — a process which could take years.
- A big pile of NUMA scheduling work. With this code, the kernel should be able to match the performance of a hand-tuned system, at least for some workloads.
- The multiqueue block layer work should greatly increase the performance of the kernel's storage subsystem with fast devices while simultaneously simplifying drivers.
- The ARM big.LITTLE switcher code has been merged, providing support for ARM's new heterogeneous multiprocessor architecture.
- The new power capping framework gives a new level of control over peripheral devices that are able to set limits on their maximum power consumption.
- Split PMD locks will improve the scalability of the memory management subsystem, especially with workloads that make heavy use of huge pages.
The 3.13 development cycle brought in 12,127 non-merge changesets from over 1,300 developers representing over 200 companies; see this page for details on where the contributions to 3.13 came from. And, as always, see the KernelNewbies 3.13 page for lots of details on what went into this release.
Short-term forecast: the 3.14 kernel can be expected right about when the Linux Foundation's Collaboration Summit is held in late March. Features that have been merged for this release include:
- The deadline scheduling class, which will be useful for realtime tasks, streaming media processing, and more.
- User-space lockdep makes the kernel's advanced tools for lock debugging available to user-space programs.
- Kernel address space layout randomization should improve the kernel's resistance to attacks by local users.
- The Android ION memory allocator has been merged; this was, by far, the largest chunk of Android code that remained outside of the mainline kernel.
- Event triggers enhance the tracing subsystem with a trigger mechanism allowing users to more easily zero in on the time when something interesting is happening.
- Networking performance should be improved with the addition of "TCP autocorking" (a way of delaying small packets briefly to allow them to be coalesced with others), the "heavy hitter filter" for traffic scheduling, and the "Proportional integral controller enhanced" scheduler which takes aim at bufferbloat problems.
The 3.14 kernel is now in the stabilization phase, where only fixes are allowed.
As with the weather, there are no certainties about what may be merged into the Linux kernel going forward; every change is evaluated on both its merits and its long-term maintenance costs. Here are a few things on the horizon that are worth watching, though.
The Android kernel patches. There has been much gnashing of teeth about the out-of-tree Android patches over the years. At this point, though, the bulk of that code has been merged upstream. In some cases, including the infamous wakelocks, an alternative solution was developed upstream and Android has migrated over to it. The biggest remaining piece is the ION memory allocator; that code has now found its way into the staging tree for the 3.14 release.
The Btrfs filesystem is taking longer than anybody might have liked to reach production readiness, but things are getting closer. Important features, like RAID5/6 support have been merged, and bugs are being squashed. We may well see at least one major distribution adopt Btrfs by default in 2014.
Control groups are the mechanism by which the kernel gathers processes into hierarchical groups; it can then apply policies and resource usage limits to those groups. This feature remains under intensive development, and a lot of changes can be expected over the course of the next year. See this article for a description of some of the ongoing issues in this area.
NUMA scheduling. Non-uniform memory access (NUMA) machines will only perform well if running processes and their memory are kept on the same nodes; otherwise the cross-node memory accesses will slow things down considerably. NUMA scheduling performance on Linux is not as good as users think it should be. The good news is that quite a bit of development effort has gone into solving this problem over the course of the last year. The 3.9 kernel included some new infrastructure, and 3.13 includes a much improved scheduler for NUMA systems.
Power-aware scheduling. On systems with multiple cores (and even cellphones are multi-core these days), quite a bit of power savings can be had by shutting down CPUs when they are not needed. Overly aggressive powering down can make things worse, though, so care is needed. There are several patch sets out there, but there are still significant disagreements over how this problem should be solved. That said, expect significant progress in this area in the 2014 time frame.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.