This page summarizes the major features in each kernel release and provides links to additional information.
Kernel 6.12 new features
This section explains new features in kernel 6.12.
Memory allocation profiling
The key to understanding memory use is knowing where allocations are made.
Kernel 6.12 includes a new memory allocation attribution system called
memory allocation profiling (CONFIG_MEM_ALLOC_PROFILING
in the config).
With memory allocation profiling, each allocation is attributed to a unique
source line so that issues with allocations can be identified quickly.
Additionally, memory allocation profiling:
Is used during the engineering phase, but is available in the standard GKI image.
Can be enabled using the
sysctl.vm.mem_profiling
boot parameter.Works both for in-kernel and loaded modules.
Faster io_uring with zero-copy and multishot read
In kernel 6.12, the statsd
and logd
modules use sendfile
zero-copy, improving their performance.
Additionally, this kernel version implements multishot read where a single read operation can retrieve multiple pieces of data simultaneously, improving performance.
Improved Berkeley Packet Filter (BPF) capabilities and support
In kernel 6.12, the BPF toolchain has been moved to support CO-RE and several modern features. Additionally, a new BPF loader enables use of modern BPF for programs that are part of AOSP.
Proxy execution
Proxy execution lets the scheduler borrow CPU cycles from high-priority processes to recover locks held by lower-priority processes. This feature mitigates priority inversion problems.
Kernel 6.6 new features
This section explains new features in kernel 6.6.
Rust support
Multiple kernel 6.6 projects use Rust.
Per-virtual memory area (VMA) locks
Kernel 6.6 uses per-virtual memory area locks to address contention issues
with mmap_sem
(formerly known as mmap_lock
). As such, apps that use
a high number of threads might see launch times reduced by as much as 20%.
Earliest Eligible Virtual Deadline First (EEVDF) scheduler replaces CFS
The EEVDF replaces the Completely Fair Scheduler (CFS) to better balance CPU access between short and long-running tasks.
Reduced power consumption from read copy update (RCU) callbacks
The RCU_LAZY
option uses a timer-based RCU callback batching method to
save power. For a lightly loaded or idle system, this option can reduce the
power consumed by 5% to 10%.
Better ZRAM memory compression
The new CONFIG_ZRAM_MULTI_COMP
build setting lets ZRAM recompress pages with
one of three alternative algorithms. This recompression
further shrinks compressed memory, providing more free space for active tasks.
Kernel 6.1 new features
This section explains new features in kernel 6.1.
Faster security with kernel control flow integrity (KCFI)
KCFI replaces control flow integrity (CFI) resulting in a reduced runtime cost and no build-time cost. The reduced runtime cost allows KCFI to be enabled in more places compared to CFI, notably tracepoints and vendor hooks.
In addition to KCFI, kernel 6.1 introduces multiple security features, such as
strict memcpy
bounds checking and straight-line speculation attack
mitigations.
For further information on KCFI, see Kernel control flow integrity.
Multi-Generational LRU (MGLRU)
MGLRU has been added to kernel 6.1 to improve memory management by better identifying which pages are actually in use. This improvement reduces the need for halting apps when the system experiences a memory shortage. This update also improves user experience as overall device responsiveness is better.
The implementation of MGLRU also includes support for a new RCU-safe maple tree, which, in some cases, can be used to replace red-black tree (rbtree). When used, the RCU-safe maple tree increases performance because of its lower footprint and locklessness.
For further information on MGLRU, see Multi-Gen LRU.
Scheduling
Maintaining and updating the scheduler is a key aspect to the work to improve the kernel. Kernel updates in 6.1 include:
- Added cluster-aware scheduling, which increases performance by migrating to cores that share L2 cache.
- Removed unnecessary energy-margin heuristic. By limiting some migrations, this update improves energy utilization up to 5%.
- Improved load balancing to reduce wakeup latency.
- Moved RCU expedited grace periods to a realtime kthread. This update greatly reduced RCU-related latency outliers.
Graphics
Kernel 6.1 contains new methods to dma-buf for exporting and importing sync files, aligning with the need for Vulcan Video API.
The new futex_waitv()
method simplifies the porting of games from other
platforms by waiting on multiple futexes simultaneously.
Debug tooling
Use the Kernel Concurrency SANitizer (KCSAN) in debug builds to identify races in kernel code.
Additionally, use the Kernel Memory SANitizer (KMSAN) to find uninitialized values in the kernel.
ARM64 support improvements
The 6.1 kernel brings multiple improvements for the ARM64 architecture, including:
- Support for the ARMv8.6 timer extensions
- Support for QARMA3 pointer-authentication algorithm
- Initial support for ARMv9 Scalable Matrix Extension (SME)
- Improvements to alternatives feature patching resulting in a smaller kernel image size