Linux 7.2 changelog.
Summary:
Contents
-
Prominent features
- Faster performance and less cache misses with cache-aware task scheduling
- Better memory reclaiming, for better performance
- Swap table phase IV
- Various Btrfs improvements
- New dm-inlinecrypt target for inline block device encryption
- openat(2) extensions
- Speedup reading /proc/filesystems and /proc/interrupts
- Preparations for the introduction of sched_ext sub-schedulers
- Core (various)
1. Prominent features
1.1. Faster performance and less cache misses with cache-aware task scheduling
This release introduces cache-aware load balancing of tasks, with the goal of co-locating tasks that share data (ie. threads of the same process) within the same Last Level Cache domain. By improving cache locality, the scheduler can reduce cache bouncing and cache misses, ultimately improving data access efficiency.
Recommended LWN article: Cache awareness for the CPU scheduler
1.2. Better memory reclaiming, for better performance
Memory reclaiming, which is the part of the kernel that decides which parts of the memory should be sent to the swap or evicted from memory, has been improved. This release cleans up and slightly improve MGLRU's reclaim loop and dirty writeback handling. As a result, we can see an up to ~30% increase in some workloads like MongoDB with YCSB and a huge decrease in file refault, no swap involved. Other common benchmarks have no regression, and LOC is reduced, with less unexpected OOM, too.
1.3. Swap table phase IV
Phase IV of the swap table work (phase I, II, III)
This release unifies the allocation and charging of anonymous and shmem swap in folios, provides better synchronization, consolidates the metadata management, hence dropping the static array and map, and improves the performance. The static metadata overhead is now close to zero, and workload performance is slightly improved. For example, mounting a 1TB swap device saves about 512MB of memory.
Recommended LWN article: Swap tables, flash-friendly swap, swap_ops, and more
1.4. Various Btrfs improvements
This release brings various improvements for the Btrfs file system:
- Enable large folios by default (they were experimental since 6.17), with no feature limitations
- Experimental support for huge folios (up to 2M)
New GET_CSUMS ioctl to return raw checksums to userspace, can be used for mkfs and deduplication optimizations
- Performance improvements on sequential writes and direct IO
1.5. New dm-inlinecrypt target for inline block device encryption
This release introduces a new dm target, dm-inlinecrypt, to support inline block-device encryption. The implementation builds on the work previously done in Android’s dm-default-key, but intentionally drops passthrough support, as that functionality does not appear likely to be accepted upstream in the near future. With this limitation, dm-inlinecrypt is positioned as a practical replacement for dm-crypt, rather than a general passthrough mechanism.
1.6. openat(2) extensions
This release adds a couple of flags to the openat(2) system calls:
OPENAT2_REGULAR flag, which refuses to open anything but regular files, protecting services from being redirected to fifos, device nodes, and friends
Add O_EMPTYPATH flag to openat(2)/openat2(2). If passed, an empty path string is accepted and LOOKUP_EMPTY is set at path resolution time, allowing to reopen the file behind the file descriptor directly
1.7. Speedup reading /proc/filesystems and /proc/interrupts
Performance when reading these two procfs files is not relevant for most applications, however some extreme users benefit from optimizing these files as much as possible, or are even used more often that you would expect (/proc/filesystems is read by libselinux and is linked into numerous frequently used programs, even simple ones like sed). This release optimizes the generation of these files.
1.8. Preparations for the introduction of sched_ext sub-schedulers
This release adds infrastructure that will be used to support sub-schedulers in sched_ext. These will be used for use cases like, for example, using different sched_ext schedulers in different cgroups
Recommended LWN article: Sub-schedulers for sched_ext
2. Core (various)
exec: relocate the dumpable mode and the user_namespace captured at execve() from mm_struct onto a new per-task task_exec_state structure that stays attached to the task for its full lifetime (cover), commit, commit, commit, commit
futex: Address the robust futex unlock race for real (cover), commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
- Task scheduler
(FEATURED) Cache aware scheduling, with the goal of co-locating tasks that share data within the same Last Level Cache (LLC) domain. By improving cache locality, the scheduler can reduce cache bouncing and cache misses (cover), commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit and Cache aware scheduling enhancements (cover), commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
Optimized Donor Migration for Proxy Execution (cover), commit, commit, commit, commit, commit, commit
tick: Refactor idle cputime accounting (cover), commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
(FEATURED) sched_ext: Topological CPU IDs (cids): a dense, topology-ordered CPU numbering where the CPUs of a core, LLC, or NUMA node form contiguous ranges, so a topology unit becomes a (start, length) slice (cover), commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
sched_ext: Improve exit-time diagnostics (cover), commit, commit, commit
sched_ext: bitmaps windowed over a slice of cid space, so a sub-scheduler can track, for example, the idle cids of its shard without a full NR_CPUS cpumask (cover), commit, commit, commit
scx_qmap: Convert to BPF arena (cover), commit, commit, commit, commit
fair: attempts to improve SD_ASYM_CPUCAPACITY scheduling by introducing SMT awareness (cover), commit, commit, commit, commit, commit
- io_uring
zcrx: Add a mechanism to communicate conditions back to userspace via a dedicated CQE, with the initial users being notification on running out of buffers and on a frag copy fallback, plus shared-memory notification statistics (cover), commit, commit, commit, commit
net: support registered buffer for plain send and recv commit
net: allow filtering on IORING_OP_CONNECT commit
pipe: reduce pipe->mutex contention by pre-allocating outside the lock. On a writers x readers sweep with 64KB writes against a 1 MB pipe throughput improves 6-28% and average write latency drops 5-22%; under memory pressure - when the cost of holding the mutex across reclaim is highest - throughput improves 21-48% and latency drops 17-33% (cover), commit, commit
Improve write performance with RWF_DONTCACHE (cover), commit, commit, commit
proc: subset=pid: Relax check of mount visibility (cover), commit, commit, commit, commit, commit, commit, commit
Simple xattr improvements (cover), commit, commit, commit, commit
(FEATURED) Add O_EMPTYPATH to openat(2)/openat2(2). If passed, LOOKUP_EMPTY is set at path resolution time (cover), commit, commit
(FEATURED) openat(2): OPENAT2_REGULAR flag support, which refuses to open anything but regular files, protecting services from being redirected to fifos, device nodes, and friends (cover), commit, commit
writeback: fix race between cgroup_writeback_umount() and inode_switch_wbs() (cover), commit, commit, commit
fanotify: lift pidfd reporting restrictions and allow fanotify to report pidfds referring to the event-generating thread (cover), commit, commit
- procfs
(FEATURED Speedup reading /proc/filesystems (it is read frequently because libselinux reads it and is linked into numerous frequently used programs, even simple ones like sed) (cover), commit, commit, commit
(FEATURED Improve /proc/interrupts (cover), commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
- VFS
Add the vfs infrastructure required to implement fs-verity support with a post-EOF merkle tree: fsverity generates and stores a zero-block hash, and iomap learns to verify data on buffered reads commit, commit, commit, commit, commit
iomap: Skip the memset in iomap_iter() once the iteration is done. In high-IOPS scenarios (4k randread NVMe polling via io_uring) the pointless memset wasted memory write bandwidth; this improves IOPS by about 5% on ext4 and xfs commit
Prerequisites for supporting directory delegations in nfsd via CB_NOTIFY callbacks (cover), commit, commit, commit, commit, commit, commit, commit
Introduce IOMAP_F_ZERO_TAIL for filesystems that maintain a separate valid data length (exFAT, NTFS) commit, commit, commit, commit
Assorted dcache cleanups and fixes (cover), commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
Assorted ->i_count changes + extension of lockless handling (cover), commit, commit, commit
- locking:
- liveupdate