Android 性能迎来提升:内核引入 AutoFDO 普惠所有 15-16 设备

最近 Google 官方宣布,把 AutoFDO(Automatic Feedback-Directed Optimization)用到了 Android kernel ,也就是内核编译优化里,从而提升了 4%-21% 的不同场景系统性能。

一般来说,在之前编译器(如 LLVM)通常需要基于静态代码分析,或者通过规则进行优化,例如猜哪条分支更容易执行,而 AutoFDO 就不一样了,它通过在实验室环境中采集设备在真实运行热门 App(Top 100)时的 CPU 执行流数据(Branch History),然后让编译器根据这些真实的「运行画像」重新编译内核,它能精准识别代码中的"热点"(Hot paths),从而进行更智能的函数内联(Inlining)和代码布局(Code Layout)优化。

说人话就是:以前编译器只能靠静态去猜哪些函数该内联、哪些分支更热,而现在先通过采样 profiler 收集真实执行路径,再把这些 " Hot paths " 反馈给编译器,让它下次构建时做更智能的函数内联(Inlining)和代码布局(Code Layout)优化

AutoFDO 在这里主要影响的是编译器启发式,比如内联、代码布局等,所以它不会改到源码语义,而对没有 profile 覆盖到的冷函数,会退回标准优化路径,这一点很关键,因为 kernel 优化最怕 corner case 回归,所以 Google 这里的态度是:先稳态收益,再逐步扩大覆盖面

所以,AutoFDO 做的就是优化内核,而在 Android 系统中,内核代码执行占用了约 40% 的 CPU 时间,所以就算内核性能提升不是特别大,但也会对冷启动、系统响应和电池续航等场景产生连锁般的正面影响,在Pixel 设备(内核版本 6.1, 6.6, 6.12)上的测试:

  • 冷启动速度: 提升约 4%
  • 开机时间 :减少约 2%
  • 用户感知 :界面更流畅、应用切换更快、续航更久

目前这个调整已经在 android16-6.12android15-6.6 分支部署,同时计划扩展到更新的 android17-6.18 ,会作为 GKI(通用内核镜像) 普惠到所有厂商。

因为是不改变代码逻辑,仅改变编译决策,因此不会引入逻辑 Bug

同时 Google 也提到了,未来想继续拓展到 GKI modules 和 vendor modules,还提到 Kleaf 和 simpleperf 已经具备支持基础,也就是未来 profile-guided kernel optimization 会扩大到更多 Android 底层组件。

那么有人可能就要问,如果 App 不是这 Top 100 的呢 ?因为谷歌明确说了,这个优化是通过 Top 100 apps + AI crawling + Pixel 实机采样 + ARM ETE/TRBE branch history 来生成 profile ,那对我的 App 有用吗?

但是实际上 AutoFDO 不是优化 App binary,而是优化 kernel binary,kernel 的热点不是某个 App 专属,例如 scheduler/binder/syscalls/page fault 这些路径几乎所有 App 都会走,所以这里的 Top 100 主要是找到 Android 用户最常走的系统路径,这要是为什么 Google 强调:

profile 和内部 fleet workload 有 85% 相似度 ,所以这个优化不是针对单个 App 的行为,而是统计分布。

所以对于大部分情况来说,这个调整都能起到正向作用,当然,如果存在 vendor 改了 kernel / drive 等场景,或者你的 App 有什么对内核的深度 Hook,又或者你的自研引擎对内核有强依赖的情况下,也可能出现反效果。

另外其实这种优化方式,也许未来 KMP 的 Kotlin/Native 部分,理论上可以借鉴这种"采样反馈"模式,针对特定设备生成更优的代码?

总的来说,这个优化还是挺有意义的,可以让 Android 15-16 的机器享受到普惠升级,并且未来还会进一步拓展优化范围,最重要是这个升级是安全的,至少官方表示这个升级不会带来 Bug

那么,你觉得呢?

链接

android-developers.googleblog.com/2026/03/Boo...

相关推荐
唐小码4 分钟前
裁员的风刮到了三线荒凉的城市
前端
爱笑鱼10 分钟前
Android 系统启动机制(八):系统服务怎样从创建走到可用?SystemServiceManager 和 Boot Phase 各管什么?
android
hai_android14 分钟前
Android 组件化开发实践
android·java·kotlin
晚安日记wanna16 分钟前
React 为何不做双端 diff?Vue 与 React 更新逻辑的三层差异
前端·react.js·面试
flash俊杰19 分钟前
AI 分段引擎与自动剪辑决策:从语义片段到时间线草稿的映射
前端·ai编程
mmsx22 分钟前
Android 几何构造器的双栈机:链式 API 底层是怎么装配几何的
android
mmsx22 分钟前
Android 地图卡成 PPT 之后:双渲染管线与空间网格渐进加载怎么救
android·app
flash俊杰31 分钟前
时间线交互引擎:从像素到帧的逆向映射与磁吸网格
前端
光影少年31 分钟前
setImmediate 和 setTimeout(0) 的区别
android·前端·react.js·ios·前端框架
flash俊杰34 分钟前
LLM 结构化输出的契约化工程:JSON Mode、Schema 约束与重试降级
前端·ai编程