KernelNewbies:

Linux 5.15 was released on Sunday, 31 Oct 2021.

Summary: This release adds a new NTFS read-write implementation; support for putting all the processes within a cgroup in the SCHED_IDLE scheduling class; Btrfs support for fs-verity and id mapping; support for the DAMON, which allows to monitor memory access patterns of specific processes; a new in-kernel SMB 3 server; a new process_mrelease(2) system call to let service managers release process resources faster; support for migrating memory pages to persistent memory instead of discarding them; support in the Device Mapper for IMA-based remote attestation; support for avoiding scheduling 32 bits tasks on 64-bit only CPUS in systems with mixed CPUs. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. New NTFS file system implementation

The Linux kernel already has a NTFS implementation, but it has severe limitations (like being read-only), which is why Linux users usually use the userspace ntfs-3g implementation. This release incorporates a new and fully functional NTFS implementation contributed by Parangon Software. This implementation supports NTFS file system versions up to 3.1, normal/compressed/sparse files and journal replaying, plus other features that will be added in the future.

1.2. ksmbd, a in-kernel SMB 3 server

ksmbd is a new kernel module which implements the server-side of the SMB 3 protocol. The target is to provide optimized performance, GPLv2 SMB server, and better lease handling (distributed caching). The bigger goal is to add new features more rapidly (e.g. RDMA aka "smbdirect", and recent encryption and signing improvements to the protocol).

This is not meant to replace Samba, which is much broader in scope -tools, security services, LDAP, Active Directory Domain Controller, cross-platform support- but rather be an extension to allow better optimizing for Linux and have better performance and feature integration in some cases.

1.3. Migrate memory pages to persistent memory in lieu of discard

In systems with some DRAM and persistent memory, once DRAM fills up, reclaim will start and some of the DRAM contents will be thrown out. In this release, pages are migrated to persistent memory instead of just being dropped, which improves performance in many benchmarks run in these kind of systems.

Recommended LWN article: Top-tier memory management

1.4. Btrfs support for fs-verity and id mapping

In this release, Btrfs has added support for fs-verity, a generic layer already support by ext4 and F2FS which provides transparent integrity and authenticity protection of read-only files.

It also adds support for id-mapped mounts, which provides the ability to map the user and group id of one mount to another, and some performance improvements.

1.5. DAMON, a data access monitor

DAMON, which stands for Data Access MONitor, is a mechanism to monitor the memory access pattern of specific user-space processes. That is, it can tell you which parts of the memory of a process are being accessed all the time,and which ones are not being used at all. It is lightweight, both in terms of memory usage and CPU usage while analyzing the target process. It is one of the pieces of a project called Data Access-aware Operating System.

DAMON aims to be used by other parts of the kernel that may be merged in the future, but it also can provide information to userspace. You can use it to profile a program and obtain its access heathmap, using the complementary tool damo, find out how your program actually behaves in the real world, and identify the dynamic hotness of your data. You can use this information simply to profile what a process is actually doing, but you can also use it to optimize your program's memory behavior by using mlock() or madvise() with MADV_WILLNEED to lock hot data which you known is going to be used, and/or madvise() with MADV_PAGEOUT to make the system reclaim cold data as soon as possible.

1.6. Introduce process_mrelease(2) system call

In modern systems it's not unusual to have a component monitoring memory conditions of the system and tasked with keeping system memory pressure under control, and killing non-essential processes to free up memory for more important ones. Examples of this are Facebook's OOM killer daemon called oomd and Android's low memory killer daemon called lmkd.

Killing and freeing the resources of a process can be delayed for a long time for various reasons. The new process_mrelease(2) system call allows to release the memory of a dying process from the context of the caller. This way the memory is freed in a more controllable way with CPU affinity and priority of the caller. The workload of freeing the memory will also be charged to the caller.

Recommended LWN article: Hastening process cleanup with process_mrelease()

1.7. Real-time locking progress

The merge of the real-time set of patches continues making progress in every release. In this release, one of the most important pieces, the bulk of the locking code, has been merged. When PREEMPT_RT is enabled, the following locking primitives are substituted by RT-Mutex based variants: mutex, ww_mutex, rw_semaphore, spinlock and rwlock.

The SLUB slab allocator has also been modified to better deal with PREEMPT_RT.

1.8. cgroup support for SCHED_IDLE

This release adds support for putting all the tasks within an entire cgroup under the SCHED_IDLE class of the task scheduler, which means that they will only run if there are not other tasks waiting to run. A key difference with normal tasks set individually to SCHED_IDLE is that tasks within a cgroup set to SCHED_IDLE maintain their relative weights.

1.9. Device Mapper IMA-based remote attestation

This release adds the necessary infrastructure for IMA-based remote attestation. These changes are the basis for deploying DM-based storage in a remote "cloud" that must validate configurations end-users run to maintain trust. It allows supported DM targets' configurations to be measured via IMA. But the policy and enforcement (of which configurations are valid) is managed by something outside the kernel (e.g. Keylime). For more details see the Documentation

1.10. Support for asymmetric scheduling affinity

Some architectures, in particular ARM, have configurations where some CPUs support legacy 32 bits apps, but some CPUs are 64-bit only. This release adds support for scheduling 32 bits tasks exclusively in the CPUs that support legacy 32 bits tasks.

2. Core (various)

3. File systems

4. Memory management

5. Block Devices

6. Tracing, perf and BPF

be matched in synthetic events. There is one limitation - an event probe can not be attached to kprobe, uprobe or another event probe commit, commit, commit, commit, commit, commit, commit, commit, commit

7. Virtualization

8. Security

9. Networking

10. Architectures

10.1. x86

10.2. ARM

10.3. ARC

10.4. S390

10.5. PowerPC

10.6. RISC-V

10.7. MIPS

10.8. M68K

11. Drivers

11.1. Graphics

11.2. Power management

11.3. Storage

11.4. Drivers in the Staging area

11.5. Networking

11.6. Audio

11.7. Tablets, touch screens, keyboards, mouses

11.8. TV tuners, webcams, video capturers

11.9. Universal Serial Bus

11.10. IOMMU

11.11. Serial Peripheral Interface (SPI)

11.12. Watchdog

11.13. Serial

11.14. CPU frequency scaling

11.15. Voltage, current regulators, power capping, power supply

11.16. Real Time Clock (RTC)

11.17. Pin controllers (pinctrl)

11.18. Multi Media Card (MMC)

11.19. Memory Technology Devices (MTD)

11.20. Industrial I/O (iio)

11.21. Multi Function Devices (MFD)

11.22. Inter-Integrated Circuit (I2C + I3C)

11.23. Hardware monitoring (hwmon)

11.24. General Purpose I/O (gpio)

11.25. LEDs

11.26. Hardware Random Number Generator (hwrng)

11.27. Cryptography hardware acceleration

11.28. PCI

11.29. Clock

11.30. PHY ("physical layer" framework)

11.31. EDAC (Error Detection And Correction)

11.32. Various

12. List of pull requests

13. Other news sites

KernelNewbies: Linux_5.15 (last edited 2021-11-16 22:22:14 by diegocalleja)