android Perfetto cpu分析教程及案例
以下是 Android Perfetto 的 CPU 分析完整教程及实战案例,结合核心指标解读和典型问题解决方案:
🔧 一、Perfetto CPU 分析基础配置
-
关键抓取配置
- 启用
Scheduling details
捕获线程调度细节 - 勾选
Coarse CPU usage counter
获取整体 CPU 占用率 - 开启
CPU frequency
监控核心频率变化
需通过 ADB 命令或开发者选项启动记录
- 启用
-
核心分析区域定位
- CPU 轨道:顶部显示各核心调度状态(0-7 为核心编号)
- 线程状态标识:
- ✅ 深绿:Running(执行中)
- 🟢 浅绿:Runnable(就绪待调度)
- 白色:Sleeping(休眠)
- 橙色:Uninterruptible Sleep(IO 阻塞)
📊 二、CPU 关键指标解析方法
-
频率与调度诊断
- 点击任务条 → 查看
Running on CPU X
定位任务所在核心 - 悬停对应 CPU 频率轨道,检查任务执行时的实时频率
- 典型问题:任务被调度到小核(如 CPU4-7)或频率锁低导致延迟
- 点击任务条 → 查看
-
CPU 利用率计算
CPU 利用率 = (Wall Duration / 时间段) / 核心数
- 操作:框选时间段 → 查看底部
Slices
中的Wall Duration
- 示例:Wall Duration 3049ms / 427ms 时间段 / 8 核 = 712.77% 利用率
- 操作:框选时间段 → 查看底部
-
线程状态问题定位表
状态 颜色 含义 优化方向 Runnable 堆积 浅绿 CPU 资源竞争激烈 检查锁竞争或优先级反转 Uninterruptible Sleep 橙色 IO 阻塞(磁盘/网络) 优化文件读写或网络请求 Running 耗时过长 深绿 代码执行效率低 算法优化或减少解释执行
🔍 三、实战优化案例
案例 1:渲染卡顿分析(温控降频)
- 现象:
Choreographer#doFrame
执行超时 - 分析步骤:
1️⃣ 定位帧绘制任务 → 发现运行在 CPU6(小核)
2️⃣ 查看频率轨道:CPU6 频率限制在 1.2GHz(低于大核满频)
3️⃣ 关联温度轨道:设备 42°C 触发温控降频 - 解决方案:
- 拆分渲染任务到多帧
- 降低非关键线程优先级
案例 2:后台服务抢占资源
- 现象:音乐播放卡顿
- 分析步骤:
1️⃣ 框选卡顿时段 → 查看Slices
排序
2️⃣ 后台服务占 40% CPU 时间(Wall Duration 超标)
3️⃣ 线程状态显示Runnable
堆积 - 解决方案:
- 通过
cpuset
限制后台服务到小核 - 修改系统配置:
/device/.../init.hardware.rc
- 通过
案例 3:SQL 精确计算线程 CPU 占用
SELECT SUM(dur) / 1e9 AS cpu_time
FROM sched_slice
WHERE ts > 723450000
AND ts < 723880000
AND utid = 45
- 用途:计算线程 45 在 430ms 内的精确 CPU 占用
️ 四、进阶优化策略
-
核心绑定策略
- ⚡ 高优先级任务(如指纹解锁)→ 绑定大核
- 🌐 后台常驻服务 → 绑定小核
- 实现:修改
cpuset
子系统配置(参考 Android 源码)
-
频率问题定位
- 🔄 Running 时间长但频率正常 → 优化代码逻辑
- 📉 频率频繁波动 → 检查温度轨道(
Power Temperature
)
💎 CPU 问题速查表:
现象 | 可能原因 | 验证方法 |
---|---|---|
任务执行时间波动大 | 大小核调度不均 | 检查任务所在核心编号 |
CPU 占用高但卡顿 | 频繁 IO 阻塞 | 分析 Uninterruptible Sleep 状态 |
突发卡顿+温度升高 | 温控降频/关核 | 关联温度与频率轨道 |
引用链接:
1.DIMENSITY PROFILER:安卓游戏调优,从未如此轻松 - 哔哩哔哩
2.Android 经验总结之性能Trace调试 - CSDN博客
3.Android性能分析利器:Perfetto深度定制与实战解析 - CSDN博客
4.Android Perfetto 系列 1:Perfetto 工具简介 - 腾讯云
5.android perfetto怎样分析 - 亿速云
6.android perfetto 使用实例解析 - 51CTO博客
7.android perfetto 分析实例 - 51CTO博客
8.android perfetto的使用案例有哪些 - 亿速云
9.Perfetto 上手指南3 —— CPU 信息分析 - 掘金开发者社区
10.Android性能分析工具-Perfetto基本使用 - CSDN博客
11.Perfetto分析手机中CPU的状况 - 51CTO博客
12.Perfetto-Android开发分析神器(性能、内存、线程调度) - CSDN博客
13.[061]perfetto使用简介 - 腾讯云
14.android系统使用perfetto工具分析掉帧 - 51CTO博客
15.如何分析手机中CPU的状况 - 之昂菌-钛
16.Perfetto 上手指南2 —— 基础使用 - 稀土掘金
17.Android性能优化–Perfetto用SQL性能分析 原创 - 清霜辰 - 博客园 - 博客园
18.Android Perfetto 系列 3:熟悉 Perfetto View - 博客园
19.【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 ) - 腾讯云
20.Perfetto性能分析 - 之昂菌-钛