Linux 6.0 kernel release

After two months of development, Linus Torvalds has released the Linux 6.0 kernel. The significant version number change is for aesthetic reasons and is a formal step to relieve the discomfort of the accumulation of a large number of releases in the series (Linus joked that the reason for changing the branch number is more likely that he runs out of fingers and toes to count version numbers) . Among the most notable changes: support for asynchronous buffered writes in XFS, the ublk block driver, task scheduler optimizations, a mechanism for verifying the correct operation of the kernel, support for the ARIA block cipher.

Key innovations in kernel 6.0:

  • Disk Subsystem, I/O and File Systems
    • Support for asynchronous buffered writes using the io_uring mechanism has been added to the XFS file system. Performance tests done with the fio toolkit (1 thread, block size 4kb, 600 seconds, sequential write) show an increase in input / output operations per second (IOPS) from 77k to 209k, data transfer rates from 314MB / s to 854MB /s, and latency drops from 9600ns to 120ns (80 times).
    • The Btrfs file system implements the second version of the protocol for the "send" command, which implements support for additional metadata, sending data in larger blocks (more than 64K) and transferring extents in compressed form. Significantly (up to 3 times) performance of direct read operations has been increased due to simultaneous reading of up to 256 sectors. Reduced lock conflicts and accelerated metadata validation by reducing reserved metadata for deferred items.
    • New EXT4_IOC_GETFSUUID and EXT4_IC_SETFSUUID ioctl operations have been added to the ext4 filesystem to retrieve or set the UUID stored in the superblock.
    • The F2FS file system offers a low memory consumption mode that optimizes operation on devices with low RAM and allows you to reduce memory consumption at the expense of performance.
    • Added support for NVMe drive authentication.
    • The NFSv4 server implements a limit on the number of active clients, which is set to 1024 valid clients per gigabyte of RAM in the system.
    • The CIFS client implementation has improved multipath performance.
    • A new flag FAN_MARK_IGNORE has been added to the event tracking subsystem in the fanotify FS to ignore specific events.
    • In the Overlayfs file system, when mounted over a file system with user ID mapping, POSIX-compliant access control lists are correctly supported.
    • Added ublk block driver that exposes specific logic to a user-space background process and uses the io_uring subsystem.
  • Memory and system services
    • New features have been added to the DAMON (Data Access MONitor) subsystem that allow not only to monitor the access of processes to RAM from user space, but also to influence memory management. In particular, a new module "LRU_SORT" is proposed, which provides reordering of LRU (Least Recently Used) lists to increase the priority of certain memory pages.
    • Implemented the ability to create new memory regions using the capabilities of the CXL (Compute Express Link) bus, which is used to organize high-speed interaction between the CPU and memory devices. CXL allows new memory regions provided by external memory devices to be attached and used as additional physical address space resources to expand system random access memory (DDR) or read-only memory (PMEM).
    • Addressed system performance issues on AMD Zen processors caused by code added 20 years ago to work around a hardware issue in some chipsets (an extra WAIT instruction was added to slow down the processor so the chipset had time to enter an idle state). The change resulted in performance degradation for workloads that frequently alternate between idle and busy states. For example, after disabling the bypass maneuver, the average tbench test scores increased from 32191 MB/s to 33805 MB/s.
    • Removed heuristic code from the task scheduler that ensures process migration to the least loaded CPUs, taking into account the predicted gain in power consumption. The developers came to the conclusion that the heuristic is not useful and it is easier to remove and move processes without additional evaluations every time such a transfer could potentially lead to a decrease in power consumption (for example, when the target CPU is at a level with lower power consumption). Disabling heuristics resulted in a reduction in power consumption when performing intensive tasks, for example, in a test with video decoding, power consumption decreased by 5.6%.
    • The distribution of tasks across CPU cores on large systems has been optimized, which made it possible to increase performance under certain types of load.
    • The io_uring asynchronous I/O interface introduces a new flag, IORING_RECV_MULTISHOT, which allows multi-shot mode to be used with the recv() system call to perform multiple reads from the same network socket at once. io_uring also implements support for network transfer without intermediate buffering (zero-copy).
    • Implemented the ability to put BPF programs attached to the uprobe into a sleep state. BPF also adds a new ksym iterator to work with kernel symbol tables.
    • Removed obsolete 'efivars' interface in sysfs for accessing UEFI boot variables (efivarfs virtual file system is now widely used to access EFI data).
    • The perf utility has new reports to analyze lock contention and the time the processor spends executing kernel components.
    • Removed the CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 setting, which allowed building the kernel in "-O3" optimization mode. It is noted that experimentation with optimization modes can be carried out through the transmission of flags during assembly ("make KCFLAGS=-O3"), and to add a setting to Kconfig, it is required to provide repeatable performance profiling, showing that the loop unrolling applied in the "-O3" mode gives a gain in compared to the "-O2" optimization level.
    • A debugfs interface has been added to get information about the operation of individual "memory shrinkers" (handlers called when there is a lack of memory and packing kernel data structures to reduce their memory consumption).
    • Support for the PCI bus has been implemented for the OpenRISC and LoongArch architectures.
    • For the RISC-V architecture, the "Zicbom" extension is implemented to manage devices with DMA that is not cache-coherent (non-cache-coherent).
  • Virtualization and Security
    • RV (Runtime Verification) verification mechanism has been added to check the correct operation on highly reliable systems that guarantee no failures. Validation is done at run time by attaching handlers to tracepoints that check the actual progress of execution against a predetermined reference deterministic automaton model that defines the expected behavior of the system. Run-time model verification is positioned as a more lightweight and easy-to-implement method for verifying the correctness of execution on mission-critical systems, complementing the classic reliability verification methods. Among the advantages of RV is the ability to provide rigorous verification without a separate implementation of the entire system in the modeling language, as well as a flexible response to unforeseen events.
    • Integrated kernel components for managing enclaves based on Intel SGX2 (Software Guard eXtensions) technology, which allows applications to execute code in isolated encrypted areas of memory, access to which is limited by the rest of the system. Intel SGX2 technology is supported in Intel Ice Lake and Gemini Lake chips, and differs from Intel SGX1 in additional instructions for dynamic enclave memory management.
    • For the x86 architecture, it is possible to transfer the seed for the pseudo-random number generator through the bootloader settings.
    • Added the ability to manage changes made through the setgroups() call to the SafeSetID LSM module. SafeSetID allows system services to securely manage users without privilege escalation (CAP_SETUID) and without gaining root user authority.
    • Added support for ARIA block cipher.
    • The BPF-based security management module implements the ability to attach handlers to individual processes and process groups (cgroups).
    • A mechanism with a watchdog implementation has been added to detect hangups of guest systems based on vCPU activity monitoring.
  • Network subsystem
    • Handlers for generating and checking SYN cookies have been added to the BPF subsystem. A set of functions (kfunc) has also been added to access and change the state of connections.
    • Support for the MLO (Multi-Link Operation) mechanism, defined in the WiFi 7 specification, has been added to the wireless stack, which allows devices to simultaneously receive and send data using different frequency bands and channels, for example, to set up several communication channels simultaneously between an access point and a client device.
    • Improved performance of the TLS protocol built into the kernel.
    • Added "hostname=" kernel command-line option to allow setting a hostname early in boot, before user-space components are started.
  • Equipment
    • The i915 (Intel) driver provides support for Intel Arc (DG2/Alchemist) A750 and A770 discrete graphics cards. An initial implementation of support for Intel Ponte Vecchio (Xe-HPC) and Meteor Lake GPUs has been proposed. Work continued on support for the Intel Raptor Lake platform.
    • The amdgpu driver continues to work on supporting the AMD RDNA3 (RX 7000) and CDNA (Instinct) platforms.
    • In the Nouveau driver, the code for supporting NVIDIA nv50 GPU display engines has been redesigned.
    • Added new logicvc DRM driver for LogiCVC screens.
    • The v3d driver (for Broadcom Video Core GPUs) now supports Raspberry Pi 4 boards.
    • Added support for Qualcomm Adreno 619 GPU to msm driver.
    • Support for ARM Mali Valhall GPUs has been added to the Panfrost driver.
    • Added initial support for Qualcomm Snapdragon 8cx Gen3 processors used in Lenovo ThinkPad X13s laptops.
    • Added audio drivers for AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake and Mediatek MT8186 platforms.
    • Added support for Intel Habana Gaudi 2 machine learning accelerators.
    • Added support for ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

At the same time, the Latin American Free Software Foundation formed a variant of the completely free kernel 6.0 - Linux-libre 6.0-gnu, cleared of firmware and driver elements that contain non-free components or code sections, the scope of which is limited by the manufacturer. The new release disables the use of blobs in the CS35L41 HD-audio driver and the UCSI driver for STM32G0 microcontrollers. Cleaned up dts files for Qualcomm and MediaTek chips. Reworked disabling blobs in MediaTek MT76 driver. Updated blob cleanup code in AMDGPU, Adreno, Tegra VIC, Netronome NFP and Habanalabs Gaudi2 drivers and subsystems. Stopped cleaning the VXGE driver removed from the kernel.

Source: opennet.ru

Add a comment