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.18 kernel was released on December 7. Among the many features merged for this release are:
- The bpf() system call has been added. This call provides user-space access to the extended Berkeley Packet Filter functionality added in recent kernel releases. eBPF is a general-purpose virtual machine that is likely to find applications throughout the kernel.
- Some significant networking performance improvements have been added, allowing even a slow machine to drive a fast interface at full wire speed, even when small packets are being transmitted. As this has been a problematic area for Linux networking performance for some time, this is an important speedup.
- Other additions to the networking code include the "foo over UDP" subsystem, support for the Data Center TCP congestion control protocol, and support for the "Geneve" generic network virtualization protocol.
- The overlayfs union filesystem was finally be brought into the mainline during this development cycle. Overlayfs allows filesystems to be laid on top of each other; it has numerous uses, including making life easier for those managing containerized systems.
There were 11,379 non-merge changesets pulled into the mainline during the 3.18 development cycle. See this article for more information on where these patches came from.
Short-term forecast: The 3.19 kernel can be expected sometime in mid-February. Some of the features that have been merged for this release include:
- Support for the Altera Nios II processor architecture.
- Support for device tree overlays, which ease the runtime configuration of the kernel for systems with add-on "daughterboard" components.
- Enhanced BPF programs can now be loaded into the kernel and attached to sockets.
- Disk scrubbing and replacement has been added to the Btrfs RAID5/6 implementation.
- The execveat() system call has been merged. Like the other "at" system calls, it takes a file descriptor for the directory to be used as the starting point for finding the executable file. It can also be used to execute a binary file directly from an open file descriptor, allowing for a better implementation of the fexecve() system call found on other Unix-like systems.
- The "AMD KFD" driver has been merged; it provides a new interface to graphical processors for non-graphics (e.g. GPGPU) applications.
- Support for the ARM "Coresight" tracing mechanism has been added to the kernel. See Documentation/trace/coresight.txtfor information about this subsystem and how to work with it.
- The InfiniBand layer has gained support for on-demand paging. This feature allows an RDMA region to be set up and populated via page faults when the memory is actually used, thus avoiding the need to pin down a bunch of memory that may never be needed.
The 3.19 kernel is now in the stabilization part of the development cycle, so there should be no more features merged at this point.
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.