Upcoming Linux 5.5 Kernel Improves Live Patching, Scheduling
The Linux 5.5 kernel is to arrive in early 2020, and we’re starting to get a clear picture as to what this kernel is to bring to the open source platform. Although you might not find any deal maker or breaker additions, this kernel does have some really interesting features and improvement.
The release of the 5.4 kernel officially kicked off the 5.5 merge window, so in the coming weeks we might see even more new options land. In the meantime, let’s take a look into what we currently know about this upcoming release.
One of the biggest new features to come to the 5.5 kernel has to do with live patching. This feature allows for the patching of a running kernel, without necessitating a reboot. Live-patching has been a part of the Linux kernel for a while now, but, thanks to SUSE kernel developer Petr Mladek, the 5.5 iteration brings about a new system state API. With the release of 5.5, live-patching will track the system state for much-improved handling of kernel patches.
This new system state feature will be able to store the necessary data to make it more adept at reverting patches. The system state will also be capable of defining compatibility between live-patches, using change id and version information. The reason for this new system state is that problems can arise with shadow variables and callbacks, such that they might change the system behavior and/or state so that it is no longer possible to use older live patches or the original kernel code.
According to Mladek, The rules for live-patch compatibilities are:
- Any completely new system state modification is allowed.
- System state modifications with the same or higher version are allowed for already modified system states.
- Cumulative live patches must handle all system state modifications from already installed live patches.
- Non-cumulative live patches are allowed to touch already modified system states.
Here are some other new features for the 5.5 kernel:
Parallel CPU Microcode Updates
This feature should please cloud providers who have been hoping to find late CPU microcode updates applied in parallel, to reduce downtime of systems with numerous cores. Due to the Spectre vulnerability, this feature had been dropped from the Linux kernel, in favor of a shift to sequential CPU microcode updating.
With the new parallel CPU microcode update, the process is handled concurrently (so long as only the first thread of each core is updated and sibling threads wait for the completion of the update). Although early loading will remain in place, those who work with cloud servers will want to take advantage of this returned feature, as they hope to avoid reboots at all costs (because when they reboot, everyone reboots).
Completely Fair Scheduler Rework
The Completely Fair Scheduler load balancing logic has been reworked. The reason for this retooling was the discovery of poor task placement using the current algorithm. According to Ingo Molnar, kernel engineer with Red Hat:
“…it replaces the old heuristics that have become less meaningful after the introduction of the PELT metrics, with a grounds-up load-balancing algorithm. As such it’s not really an iterative series, but replaces the old load-balancing logic with the new one. We hope there are no performance regressions left — but statistically it’s highly probable that there *is* going to be some workload that is hurting from these changes.”
Tests found that:
- Using a dual quad-core ARM64 system performance increase ranged from 1% to 10% (using Hackbench).
- Using a 224-core ARM64 server performance increase ranged from 1% to 12% using Hackbench and up to 33% using Dbench.
System76 ACPI Driver for Coreboot-Enabled Laptops
System builder System76 introduced Coreboot to two of its laptops (Galago Pro and Darter Pro). Coreboot is an open source replacement for the proprietary BIOS found in most computers. A new ACPI driver was needed for these laptops and kernel 5.5 will finally make that available. This new ACPI driver will enable support for features like control of Fn and Fx keys, keyboard backlight control, airplane mode LEDs, and more.
New WFX Wi-Fi Driver
A new WFX Wi-Fi driver for the Silicon Labs WF200 ASIC transceiver is coming to Linux kernel 5.5. This particular wireless transceiver is geared toward low-power IoT devices and uses a 2.4 GHz 802.11b/g/n radio optimized for low power RF performance in crowded RF environments. This new driver can interface via both Serial Peripheral Interface (SPI) and Secure Digital Input Output (SDIO).
HVMe Drive Temperature Support
Prior to kernel 5.5, the Linux kernel supported the monitoring of Non-Volatile Memory Express (NVMe) drive temperatures, only by way of the nvme utility (which had to be run as root). With the release of kernel 5.5, support for NVMe temperature reporting will be built in, thanks to the HWMON infrastructure. Although the NVME_HWMON Kconfig switch is optional, it could very well be that most Linux distributions will enable it out of the box.
KVM Virtualization Improvements
The Kernel Virtual Machine (KVM) implementation will be seeing a number of improvements with the 5.5 kernel. Among those improvements are:
- XSAVES support for AMD processors.
- Retpoline optimizations for Spectre mitigation offset.
- Nested five-level page table support (which will allow access to more system memory).
- PMU virtualization optimizations.
- IOAPIC optimizations.
- Data abort report and injection for ARM.
- TSX_CTRL virtualization for more TAA happiness.
- Improved allocation and flushing of SEV ASIDs.
The Linux Foundation and Red Hat are sponsors of The New Stack.
Feature image by Deborah Breen Whiting from Pixabay