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 4.5 kernel was released on March 13. The list of features merged for this release includes:
- Forward-error correction in the dm-verity subsystem, allowing for recovery of data from storage devices even when several blocks have been corrupted.
- The mandatory locking feature is no longer mandatory; eventually this little-loved feature may disappear entirely.
- There is a new system call: copy_file_range(). It allows an application to request the copying of a range of data from one file to another, with the possibility that the underlying storage system will optimize the operation.
- It is now possible for a privileged user to force the shutdown of an open network connection. This feature is especially useful on mobile devices, where connections must be reestablished after moving from WiFi to broadband connectivity.
- Direct I/O and DMA are now supported on persistent memory devices, filling the last significant hole in the kernel's support for this hardware.
- The madvise() system call supports a new operation — MADV_FREE — by which an application can indicate memory that is not immediately needed and which may be reclaimed by the system if needed.
As usual, this development cycle also contains a long list of new drivers, important fixes, internal improvements, and more. In the end, 12,080 non-merge changesets were pulled into the mainline for this development cycle; see this article for details on where that code came from.
Short-term forecast: the 4.6 kernel can be expected sometime close to May 15. There is quite a list of features for this release:
- Post-init read-only memory is a new hardening mechanism added to the kernel; it is the beginning of a renewed effort to make the kernel more resistant to exploitation.
- Memory protection keys are an Intel CPU feature allowing programs to divide their memory into zones and apply additional access restrictions to each zone. This, too, is a hardening technique; it can also be used, for example, to prevent sensitive data (cryptographic keys, for example) from being read when it is not in use. 4.6 will have the low-level support and will use this feature to set up execute-only memory; a set of associated system calls can be expected for 4.7.
- The new preadv2() and pwritev2() system calls add a "flags" argument allowing greater control over how I/O is done; the first use is to add a flag indicating a high-priority operation that should use polling for performance if possible.
- The kernel connection multiplexer will enable the implementation of higher-level network protocols in the kernel, for both performance and security.
- Compile-time stack validation is mostly of interest to kernel developers, but it will benefit all users by ensuring that stack tracebacks generated within the kernel (generally when something goes wrong) are accurate. This feature is also a necessary precondition to the full implementation of the live-patching feature, allowing more complex patches to be applied to a running kernel.
- The OrangeFS distributed filesystem has been merged after a long round of review and improvement.
12,172 changesets came into the mainline during the 4.6 merge window. That is more than the entire 4.5 development cycle and, in fact, constitutes the busiest merge window in the history of the kernel project. If this pace continues, the 4.6 kernel will be the result of the busiest development cycle ever.
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.
Kdbus is an implementation of the D-Bus interprocess communication mechanism in the kernel. This work has run into trouble in the developent community and is currently being redesigned. Chances are that kdbus will eventually find its way into the kernel in some form, though.
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.
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.