本页总结了每个内核版本中的主要功能,并提供了其他信息的链接。
内核 6.12 中的新功能
本部分介绍了内核 6.12 中的新功能。
内存分配性能分析
了解内存用量,关键在于了解分配的位置。内核 6.12 包含一个名为内存分配性能分析(在配置中为 CONFIG_MEM_ALLOC_PROFILING
)的新内存分配归因系统。借助内存分配性能分析,系统会将每个分配归因于唯一的源代码行,以便快速识别分配问题。此外,内存分配性能分析还具有以下优势:
在工程阶段使用,但在标准 GKI 映像中可用。
可使用
sysctl.vm.mem_profiling
启动参数启用。适用于内核模块和已加载模块。
通过零拷贝和多发读取加快 io_uring 速度
在内核 6.12 中,statsd
和 logd
模块使用 sendfile 零拷贝,从而提高了性能。
此外,此内核版本实现了多拍摄读取,其中单个读取操作可以同时检索多部分数据,从而提升性能。
改进了 Berkeley 数据包过滤器 (BPF) 功能和支持
在内核 6.12 中,BPF 工具链已移至支持 CO-RE 和多项现代功能。此外,新的 BPF 加载器支持为 AOSP 中的程序使用新型 BPF。
代理执行
借助代理执行,调度程序可以从高优先级进程借用 CPU 周期,以恢复由低优先级进程持有的锁。此功能可缓解优先级倒置问题。
内核 6.6 中的新功能
本部分介绍了内核 6.6 中的新功能。
Rust 支持
多个内核 6.6 项目使用 Rust。
每个虚拟内存区域 (VMA) 锁
内核 6.6 使用每个虚拟内存区域锁来解决 mmap_sem
(以前称为 mmap_lock
)的争用问题。因此,使用大量线程的应用的启动时间可能会缩短多达 20%。
最早符合条件的虚拟截止时间优先 (EEVDF) 调度器取代了 CFS
EEVDF 取代了完全公平调度程序 (CFS),以便更好地在短时间运行的任务和长时间运行的任务之间平衡 CPU 访问。
降低了读取副本更新 (RCU) 回调的功耗
RCU_LAZY
选项使用基于计时器的 RCU 回调批处理方法来节省电量。对于负载较低或处于空闲状态的系统,此选项可将功耗降低 5% 到 10%。
改进了 ZRAM 内存压缩
借助新的 CONFIG_ZRAM_MULTI_COMP
build 设置,ZRAM 可以使用三种替代算法之一重新压缩页面。这种重新压缩会进一步缩减压缩内存,为正在运行的任务提供更多可用空间。
内核 6.1 中的新功能
本部分介绍了内核 6.1 中的新功能。
借助内核控制流完整性 (KCFI) 更快地实现安全
KCFI 取代了控制流完整性 (CFI),从而降低了运行时开销,并且没有构建时开销。与 CFI 相比,运行时开销降低,因此 KCFI 可以在更多位置(尤其是轨迹点和供应商钩子)启用。
除了 KCFI 之外,内核 6.1 还引入了多项安全功能,例如严格的 memcpy
边界检查和直线推测攻击缓解措施。
如需详细了解 KCFI,请参阅内核控制流完整性。
多代 LRU (MGLRU)
内核 6.1 中添加了 MGLRU,以便通过更好地识别实际正在使用的页面来改进内存管理。此项改进减少了在系统出现内存不足时需要暂停应用的情况。此更新还改进了用户体验,因为设备的整体响应速度更快。
MGLRU 的实现还支持新的 RCU 安全枫树,在某些情况下,它可用于替换红黑树 (rbtree)。使用 RCU 安全的枫树时,由于其占用空间更小且无锁,因此可以提高性能。
如需详细了解 MGLRU,请参阅多代 LRU。
Scheduling
维护和更新调度器是改进内核工作的关键方面。6.1 中的内核更新包括:
- 添加了集群感知型调度,通过迁移到共享 L2 缓存的内核来提升性能。
- 移除了不必要的能耗余量启发词语。通过限制某些迁移,此更新最多可将能耗利用率提高 5%。
- 改进了负载均衡,以缩短唤醒延迟时间。
- 将 RCU 加速宽限期移到了实时 kthread。此更新大大减少了与 RCU 相关的延迟时间离群值。
图形
内核 6.1 包含用于导出和导入同步文件的 dma-buf 新方法,符合 Vulcan Video API 的需求。
新 futex_waitv()
方法通过同时等待多个 futex 来简化从其他平台移植游戏的操作。
调试工具
在调试 build 中使用内核并发安全检查器 (KCSAN) 来识别内核代码中的争用问题。
此外,您还可以使用内核内存 SANitizer (KMSAN) 查找内核中的未初始化值。
改进了对 ARM64 的支持
6.1 内核为 ARM64 架构带来了多项改进,包括:
- 支持 ARMv8.6 计时器扩展
- 支持 QARMA3 指针身份验证算法
- 对 ARMv9 可伸缩矩阵扩展 (SME) 的初始支持
- 改进了备选功能补丁,使内核映像大小变小