内核版本说明

本页总结了每个内核版本中的主要功能,并提供了其他信息的链接。

内核 6.12 中的新功能

本部分介绍了内核 6.12 中的新功能。

内存分配性能分析

了解内存用量,关键在于了解分配的位置。内核 6.12 包含一个名为内存分配性能分析(在配置中为 CONFIG_MEM_ALLOC_PROFILING)的新内存分配归因系统。借助内存分配性能分析,系统会将每个分配归因于唯一的源代码行,以便快速识别分配问题。此外,内存分配性能分析还具有以下优势:

  • 在工程阶段使用,但在标准 GKI 映像中可用。

  • 可使用 sysctl.vm.mem_profiling 启动参数启用。

  • 适用于内核模块和已加载模块。

通过零拷贝和多发读取加快 io_uring 速度

在内核 6.12 中,statsdlogd 模块使用 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) 的初始支持
  • 改进了备选功能补丁,使内核映像大小变小