内核版本说明

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

Kernel 6.12 新特性

本节介绍 kernel 6.12 中的新特性。

内存分配分析

了解内存使用的关键在于知道内存分配的位置。Kernel 6.12 包含一个新的内存分配归因系统,称为内存分配分析(配置中的 CONFIG_MEM_ALLOC_PROFILING)。借助内存分配分析,每次分配都归因于唯一的源代码行,以便可以快速识别分配问题。此外,内存分配分析

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

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

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

通过零拷贝和多镜头读取实现更快的 io_uring

在 kernel 6.12 中,statsdlogd 模块使用 sendfile 零拷贝,从而提高了它们的性能。

此外,此内核版本还实现了多镜头读取,其中单个读取操作可以同时检索多条数据,从而提高性能。

改进的 Berkeley Packet Filter (BPF) 功能和支持

在 kernel 6.12 中,BPF 工具链已迁移为支持 CO-RE 和多个现代功能。此外,新的 BPF 加载器支持将现代 BPF 用于 AOSP 的程序。

代理执行

代理执行允许调度程序从高优先级进程借用 CPU 周期,以恢复低优先级进程持有的锁。此功能缓解了优先级反转问题。

Kernel 6.6 新特性

本节介绍 kernel 6.6 中的新特性。

Rust 支持

多个 kernel 6.6 项目使用 Rust。

按虚拟内存区域 (VMA) 锁

Kernel 6.6 使用按虚拟内存区域锁来解决 mmap_sem(以前称为 mmap_lock)的争用问题。因此,使用大量线程的应用可能会发现启动时间缩短多达 20%。

最早符合条件的虚拟截止时间优先 (EEVDF) 调度程序取代 CFS

EEVDF 取代了完全公平调度程序 (CFS),以更好地平衡短时任务和长时间运行任务之间的 CPU 访问。

减少读取复制更新 (RCU) 回调的功耗

RCU_LAZY 选项使用基于计时器的 RCU 回调批处理方法来节省电量。对于负载较轻或空闲系统,此选项可以减少 5% 到 10% 的功耗。

更好的 ZRAM 内存压缩

新的 CONFIG_ZRAM_MULTI_COMP 构建设置允许 ZRAM 使用三种备用算法之一重新压缩页面。此重新压缩进一步缩小了压缩内存,从而为活动任务提供更多可用空间。

Kernel 6.1 新特性

本节介绍 kernel 6.1 中的新特性。

通过内核控制流完整性 (KCFI) 实现更快的安全性

KCFI 取代了控制流完整性 (CFI),从而降低了运行时成本,并且没有构建时成本。与 CFI 相比,降低的运行时成本允许在更多地方启用 KCFI,尤其是在跟踪点和供应商挂钩中。

除了 KCFI 之外,kernel 6.1 还引入了多项安全功能,例如严格的 memcpy 边界检查和直线推测攻击缓解措施。

有关 KCFI 的更多信息,请参阅内核控制流完整性

多代 LRU (MGLRU)

MGLRU 已添加到 kernel 6.1 中,通过更好地识别实际使用的页面来改进内存管理。此改进减少了系统遇到内存短缺时暂停应用的需求。此更新还改善了用户体验,因为整体设备响应速度更快。

MGLRU 的实现还包括对新的 RCU 安全枫树的支持,在某些情况下,该树可用于替换红黑树 (rbtree)。使用后,RCU 安全枫树因其更小的占用空间和无锁性而提高了性能。

有关 MGLRU 的更多信息,请参阅 多代 LRU

调度

维护和更新调度程序是改进内核工作的关键方面。6.1 中的内核更新包括

  • 添加了集群感知调度,通过迁移到共享 L2 缓存的内核来提高性能。
  • 删除了不必要的能量裕度启发式方法。通过限制某些迁移,此更新将能源利用率提高了高达 5%。
  • 改进了负载均衡以减少唤醒延迟。
  • 将 RCU 加速宽限期移至实时 kthread。此更新大大减少了 RCU 相关的延迟异常值。

图形

Kernel 6.1 包含用于导出和导入同步文件的 dma-buf 新方法,符合 Vulcan Video API 的需求。

新的 futex_waitv() 方法通过同时等待多个互斥锁,简化了从其他平台移植游戏的过程。

调试工具

在调试版本中使用内核并发性清理器 (KCSAN) 来识别内核代码中的竞争。

此外,使用内核内存清理器 (KMSAN) 来查找内核中未初始化的值。

ARM64 支持改进

6.1 内核为 ARM64 架构带来了多项改进,包括

  • 支持 ARMv8.6 定时器扩展
  • 支持 QARMA3 指针身份验证算法
  • ARMv9 可伸缩矩阵扩展 (SME) 的初始支持
  • 改进了备用功能修补,从而减小了内核映像大小