Release of Linux kernel 6.0

After two months of development, Linus Torvalds has released the Linux kernel 6.0. The significant change in version number was made for aesthetic reasons and serves as a formal step to alleviate discomfort from the accumulation of many releases in the series (Linus joked that the reason for the change in branch number was largely because he was running out of fingers on his hands and feet to count version numbers). Among the most notable changes are: support for asynchronous buffered writes in XFS, the ublk block driver, task scheduler optimization, a kernel correctness verification mechanism, and support for the ARIA block cipher.

Key innovations in kernel 6.0:

  • Disk subsystem, input/output, and file systems
    • The XFS file system has added support for asynchronous buffered writes using the io_uring mechanism. Performance tests conducted with the fio tool (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 speeds from 314MB/s to 854MB/s, and a reduction in latency from 9600ns to 120ns (80 times).
    • In the Btrfs file system, the second version of the protocol for the 'send' command has been implemented, supporting additional metadata, sending data in larger blocks (over 64K), and transferring extents in a compressed format. The performance of direct read operations has significantly improved (up to 3 times) due to simultaneous reading of up to 256 sectors. Lock conflicts have been reduced, and metadata validation has been accelerated by minimizing reserved metadata for deferred items.
    • In the ext4 file system, new ioctl operations EXT4_IOC_GETFSUUID and EXT4_IC_SETFSUUID have been added to extract or set the UUID identifier stored in the superblock.
    • The F2FS file system has introduced a low memory consumption mode that optimizes performance on devices with limited RAM and reduces memory usage at the cost of performance.
    • Support for NVMe device authentication has been added.
    • In server NFSv4 has implemented a limit on the number of active clients, set at 1024 allowable clients per gigabyte of RAM in the system.
    • The performance of the CIFS client has been improved in channel multiplexing mode.
    • A new flag FAN_MARK_IGNORE has been added to the event tracking subsystem in the fanotify filesystem to ignore specific events.
    • In the Overlayfs filesystem, when mounting over a filesystem with user ID mapping, correct support for POSIX-compliant access control lists has been ensured.
    • A block driver ublk has been added, moving specific logic to the background process in user space and utilizing the io_uring subsystem.
  • Memory and system services
    • New capabilities have been added to the DAMON (Data Access MONitor) subsystem, allowing not only monitoring of process access to memory from user space but also influencing memory management. In particular, a new module 'LRU_SORT' has been proposed, providing reorganization of LRU (Least Recently Used) lists to prioritize certain memory pages.
    • The capability to create new memory regions using the features of the CXL (Compute Express Link) bus has been implemented, which is used for high-speed interaction between the CPU and memory devices. CXL allows connecting new memory regions provided by external memory devices and using them as additional resources for physical address space to expand system RAM (DDR) or persistent memory (PMEM).
    • Performance issues on AMD Zen processors caused by code added 20 years ago to work around a hardware problem in some chipsets (an additional WAIT instruction was added, slowing down the processor to allow the chipset to enter idle state) have been resolved. This change led to improved performance in workloads that frequently alternate between idle and busy states. For instance, after disabling the workaround, the average tbench test score increased from 32191 MB/s to 33805 MB/s.
    • The task scheduler has removed the code with heuristics that ensured the migration of processes to the least loaded CPUs, taking into account the projected gain in energy consumption. Developers concluded that heuristics do not provide sufficient benefit and it is simpler to move processes without additional assessments each time such a relocation could potentially lead to reduced energy consumption (for instance, when the target CPU operates at a level with lower energy consumption). The disabling of heuristics has led to a reduction in energy consumption when performing intensive tasks; for example, in a video decoding test, energy consumption decreased by 5.6%.
    • Task distribution across CPU cores has been optimized on large systems, allowing for improved performance under certain workloads.
    • A new flag IORING_RECV_MULTISHOT has been introduced in the asynchronous I/O interface io_uring, enabling the use of 'multi-shot' mode with the recv() system call to perform multiple read operations from a single network socket at once. io_uring has also implemented support for zero-copy network transmission.
    • The ability to put BPF programs attached to uprobes into a sleep state has been implemented. A new ksym iterator has also been added to BPF for working with the kernel symbol tables.
    • The obsolete 'efivars' interface in sysfs, intended for accessing UEFI boot variables, has been removed (virtual file system efivarfs is now used everywhere for EFI data access).
    • New reports for analyzing lock conflicts and the time spent by the processor executing kernel components have been implemented in the perf utility.
    • The CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 setting, which allowed the kernel to be built in '-O3' optimization mode, has been removed. It is noted that optimization mode experiments can be conducted by passing flags at build time ('make KCFLAGS=-O3'), and to add a setting to Kconfig, repeatable performance profiling is required to show that the loop unrolling applied in '-O3' mode offers advantages over the '-O2' optimization level.
    • A debugfs interface has been added for obtaining information on the operation of individual memory shrinkers (handlers invoked during memory shortages that pack kernel data structures to reduce their memory consumption).
    • Support for the PCI bus has been implemented for OpenRISC and LoongArch architectures.
    • An extension ‘Zicbom’ has been introduced for RISC-V architecture to manage devices with DMA that are not cache-coherent.
  • Virtualization and Security
    • A Runtime Verification (RV) mechanism has been added to verify the correctness of operation in high-reliability systems that guarantee the absence of failures. Verification occurs during runtime by attaching handlers to tracing points that compare the actual execution flow with a predefined reference deterministic model of the automaton, which defines the expected system behavior. Runtime verification is positioned as a more lightweight and practical way to confirm execution correctness in critical systems, complementing traditional reliability verification methods. Among the advantages of RV is the ability to provide strict verification without a separate implementation of the entire system in a modeling language, as well as flexible responses to unforeseen events.
    • Kernel components have been integrated to manage enclaves based on Intel SGX2 (Software Guard eXtensions) technology, allowing applications to execute code in isolated encrypted memory areas, with restricted access from the rest of the system. Intel SGX2 technology is supported in Intel Ice Lake and Gemini Lake chips and differs from Intel SGX1 with additional instructions for dynamic memory management of enclaves.
    • For x86 architecture, the capability to pass a seed for the pseudorandom number generator through bootloader settings has been implemented.
    • The SafeSetID LSM module has been enhanced with the ability to manage changes made through the setgroups() call. SafeSetID allows system services to manage users safely without privilege escalation (CAP_SETUID) and without obtaining root user permissions.
    • Support for the ARIA block cipher has been added.
    • In the security management module based on BPF, the ability to attach handlers to individual processes and process groups (cgroups) has been implemented.
    • A watchdog mechanism has been added to detect crashes in guest systems based on vCPU activity monitoring.
  • Network subsystem
    • The BPF subsystem has been enhanced with handlers for generating and verifying SYN cookies. Additionally, a set of functions (kfunc) has been introduced for accessing and modifying connection states.
    • Support for the MLO (Multi-Link Operation) mechanism, defined in the WiFi 7 specification, has been added to the wireless stack. This allows devices to simultaneously receive and send data using different frequency ranges and channels, enabling the establishment of multiple communication links between the access point and client devices.
    • The performance of the TLS protocol implementation built into the kernel has been improved.
    • A new kernel command line parameter "hostname=" has been added, allowing the host name to be set early in the boot process, before user space components start.
  • Hardware
    • The i915 driver (Intel) now supports the discrete Intel Arc (DG2/Alchemist) A750 and A770 graphics cards. Initial support for the Intel Ponte Vecchio (Xe-HPC) and Meteor Lake GPUs has been proposed. Work continues on supporting the Intel Raptor Lake platform.
    • In the amdgpu driver, work continues to provide support for AMD RDNA3 (RX 7000) and CDNA (Instinct) platforms.
    • The Nouveau driver has undergone a rewrite of the code supporting NVIDIA nv50 GPU display engines.
    • A new DRM driver, logicvc, has been added for LogiCVC displays.
    • Support for Raspberry Pi 4 boards has been implemented in the v3d driver (for Broadcom Video Core GPUs).
    • Support for the Qualcomm Adreno 619 GPU has been added to the msm driver.
    • Support for the ARM Mali Valhall GPU has been added to the Panfrost driver.
    • Initial support for Qualcomm Snapdragon 8cx Gen3 processors, used in Lenovo ThinkPad X13s laptops, has been added.
    • Audio drivers have been added for AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake, and Mediatek MT8186 platforms.
    • Support for Intel Habana Gaudi 2 machine learning accelerators has been added.
    • Support for ARM SoCs Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, and Google Chameleon v3 has been added.

At the same time, the Latin American Free Software Foundation has developed a variant of the fully free kernel 6.0 — Linux-libre 6.0-gnu, stripped of firmware and driver elements containing non-free components or sections of code whose usage is restricted by the manufacturer. In this new release, the use of blobs has been disabled in the CS35L41 HD-audio driver and the UCSI interface driver for STM32G0 microcontrollers. The dts files for Qualcomm and MediaTek chips have been cleaned. The blob disabling in the MediaTek MT76 driver has been redesigned. The blob cleaning code in the AMDGPU, Adreno, Tegra VIC, Netronome NFP, and Habanalabs Gaudi2 drivers and subsystems has been updated. The VXGE driver cleanup has been discontinued as it has been removed from the kernel.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster