Linus Torvalds announced the release of Linux Kernel 3.15 last Sunday:
So I ended up doing an rc8 because I was a bit worried about some last-minute dcache fixes, but it turns out that nobody seemed to even notice those. We did have other issues during the week, though, so it was just as well. The futex fixes and cleanups may stand out, but as usual there’s various other random fixes since rc8 in there too: mainly drivers (drm, networking, sound, usb etc), networking, scheduling and perf tooling.
But it’s all been fairly small and quiet, which *may* of course be due to the fact that last week was also the first week of the merge window for 3.16. That might have distracted some developers. I’m not entirely convinced I liked the overlap, but it seemed to work ok, and unless people scream really loudly (“Please don’t _ever_ do that again”) and give good reasons for doing so, I might end up doing that overlapping merge window in the future too if it ends up helping out with some particular timing issue.
That said, I also don’t think it was such a wonderful experience that I’d want to necessarily do the overlap every time, without a good specific reason for doing so. It was kind of nice being productive during the last week or rc (which is usually quite boring and dead), but I think it might be a distraction when people should be worrying about the stability of the rc.
Of course, maybe the overlap ends up meaning that we get less noise during the last week of stabilization, and it actually helps. It could go either way. I’d be interested to hear what people thought, although I _suspect_ most people don’t feel strongly either way.
Anyway, with 3.15 released, my “master” branch has already merged the work in my “next” branch on my local machine, and I’ll be decommissioning the “next” branch once I push that all out. After that, any future merge window work will happen on “master”, and we’ll be back to the normal single-branch model for my tree.
Kernel 3.14 brought a file systems (btrfs) and networking improvements, zram was considered stable, etc. Linux 3.15 main changes include:
- Faster resume from power suspend in systems with hard disks – Resuming a system from suspend used to take a long time in systems with traditional hard disks, because the system blocks the resume process until the hard disk finish powering up. In this release, commands are sent to the hard disk asynchronously, so the entire resuming process isn’t paused by the hard disk. The end result is that systems with hard disks will resume several seconds faster with this Linux release. For more details, read this blog post.
- Improved working set size detection – When there is not enough room for all memory in RAM, the Linux kernel is in charge of deciding which memory must be kept in RAM, and which must be sent to swap or discarded. In this release, Linux does more advanced tracking of how memory gets used and can balance better the size of the lists, which makes Linux perform better in certain workloads, adapt better to workload size changes, and creates a foundation to build improved policies in the future. Read LWN article Better active/inactive list balancing for details.
- EFI 64 bit kernels can be booted from 32 bit firmware – Most modern x86 CPUs are 64bit, yet many systems ship with a 32 bit EFI implementation. This didn’t allow to boot a Linux 64 bit EFI kernel from these 32 bit EFI systems. This limitation has been removed, a 64-bit kernel can be booted on 32-bit firmware that runs on 64 bit CPUs.
- New file locking scheme: file private locks – Due to some unfortunate history, POSIX locks have very strange and unhelpful semantics: they are dropped whenever the process closes any file descriptor associated with the inode, and locks taken between threads within the same process won’t conflict with one another, which renders them useless for synchronization between threads. This release adds a new type of lock that attempts to address these issues. These locks will conflict with classic POSIX read/write locks, but have semantics that are more like BSD locks with respect to inheritance and behavior on close.Read LWN article File-private POSIX locks to get more information.
- Faster erasing and zeroing of parts of a file – This release adds two new fallocate(2) mode flags: FALLOC_FL_COLLAPSE_RANGE which allows to remove a range of a file without leaving holes, improving the performance of these operations that previously needed to be done with workarounds, and FALLOC_FL_ZERO_RANGE which allows to set a range of a file to zero, much faster than it would take to do it manually. Only XFS and Ext4 have added support for these new flags in this release, and other filesystems will follow in the future. You can read Finding the proper scope of a file collapse operation for details
- File cross-renaming support – Cross-rename, a variant of rename which exchanges the two files, has been added. This allows use cases which were not possible before, for instance atomically replacing a directory tree with a symlink. It also allows overlayfs and friends to operate on whiteouts atomically. More information can be found in LWN article Exchanging two files.
- zram: LZ4 compression support, improved performance – Zram memory compression mechanism added support for the LZ4 compression algorithm, which is better than the current available LZO in some cases, as well as come performance improvements to concurrent compression of multiple compression streams, and the ability to switch the compression algorithm in /sys/block/zram0/comp_algorithm.
- Intel AVX-512 vector instructions support – AVX-512 are 512-bit extensions to the 256-bit Advanced Vector Extensions SIMD instructions for x86 instruction set architecture proposed by Intel, and scheduled to be supported in 2015 with Intel’s Knights Landing processor. Read the documentation on Intel website for more information about AVX-512.
- FUSE: improved write performance – FUSE can now use cached writeback support to fuse, which improves write throughput.
Starting with Linux 3.15 release, I’ll also point out some of the improvements and new features brought to the ARM architecture:
- AllWinner – It’s now possible to boot a usable headless Linux OS using the mainline kernel on AllWinner A1x/A2X. Support have been added to LinkSprite pcDuino, Inet 97f, and A10-OLinuXino-LIME. You can read details about AllWinner changes here.
- Device tree support added for various OMAP, Atmel, Broadcom, Marvell, Texas Instruments Keystone & Sitara, and Freescale i.MX based hardware platforms
- Various perf modifications for ARM64, Cortex A12, and Qualcomm krait.
- Rockchip – Added SMP support
- SATA driver added for Applied Micro X-Gene and Exynos 5250