Perfetto项目Android系统性能追踪快速入门指南
前言
Perfetto是Google开发的一款高性能系统级追踪工具,专门用于收集和分析Android设备的系统级性能数据。本文将详细介绍如何在Android设备上使用Perfetto进行性能追踪。
准备工作
服务启动
Perfetto基于平台服务实现,不同Android版本需要注意:
- Android 11(R)及以上:服务默认启用
- Android 9(P)和10(Q):需要手动启用服务
adb shell setprop persist.traced.enable 1
- Android 9以下:需要使用
record_android_trace
脚本
追踪方法
Perfetto提供多种追踪方式,适合不同使用场景。
1. 使用Perfetto UI(推荐新手)
图形化界面操作简单直观:
- 打开Perfetto UI
- 左侧菜单选择"Record new trace"
- 选择需要追踪的数据源
- 建议新手从"CPU"下的"Scheduling details"开始
- 连接设备并开始记录
- 等待追踪完成并查看结果
优势:
- 可视化配置
- 实时预览
- 无需记忆复杂命令
2. 命令行方式(适合高级用户)
使用辅助脚本
推荐使用record_android_trace
脚本,它简化了操作流程:
# 下载脚本
curl -O [脚本地址]
chmod u+x record_android_trace
# 示例用法
./record_android_trace -o trace.perfetto-trace -t 30s -b 64mb \
sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
参数说明:
-o
:输出文件-t
:追踪时长-b
:缓冲区大小- 后面跟随的是要追踪的类别
直接使用设备命令
对于熟悉Perfetto的用户,可以直接使用设备上的命令:
adb shell perfetto -o /data/misc/perfetto-traces/trace.perfetto-trace -t 20s \
sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
注意事项:
- Ctrl+C可能无法正常终止追踪
- Android 12以下版本有SELinux限制
- 长时追踪建议使用后台模式
3. 完整配置文件方式
对于需要精细控制的场景,可以使用配置文件:
duration_ms: 10000
buffers: {
size_kb: 8960
fill_policy: DISCARD
}
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "sched/sched_switch"
atrace_categories: "gfx"
}
}
}
使用方式:
cat config.pbtx | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace.perfetto-trace
常见问题处理
-
文件权限问题:
- Android 10以下:使用
adb shell cat
方式获取追踪文件 - Android 12+:可以使用
/data/misc/perfetto-configs/
目录
- Android 10以下:使用
-
长时追踪:
PID=$(perfetto --background) # ...执行测试... kill $PID
-
配置文件格式:
- Android Q+支持文本格式(--txt)
- Android P需要使用二进制格式
最佳实践建议
- 对于应用开发者:重点关注gfx、view等UI相关类别
- 对于系统开发者:需要关注sched、binder等底层事件
- 内存分析:添加memory数据源
- 性能测试:适当增加缓冲区大小和追踪时长
结语
Perfetto作为Android平台新一代的性能分析工具,提供了从简单到高级的多种使用方式。无论是应用开发者还是系统工程师,都能找到适合自己的使用模式。建议新手从UI方式开始,逐步过渡到命令行方式,最终掌握配置文件方式以获得最大的灵活性。
通过本文介绍的方法,您应该已经掌握了在Android设备上进行性能追踪的基本技能。实际使用时,可以根据具体需求组合不同的数据源和配置参数,获得最有价值的性能数据。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考