perf2perfetto工具使用说明
| 版本记录 | | 作者 | | 变更内容 | | 2026/05/09 | | 袁欣 | |
- 新增交互式选择器,无需配置参数直接运行run.py进入图形化菜单进行抓取

- 合并Trace中新增GPU渲染追踪,提取高通kgsl 事件,重建单帧GPU渲染生命周期
- Track 命名优化
- 时间戳对齐机制优化,统一 CLOCK_BOOTTIME,修复时钟域混合问题 | | 2025/10/27 | | 袁欣 | |
- simpleperf bin 目录下添加 Window 平台版本 simpleperf 可执行文件 | | 2025/10/16 | | 袁欣 | |
- prebuilts 目录下添加32位 V50.1 版本 perfetto
- simpleperf bin 目录下添加 Linux 平台版本 simpleperf 可执行文件 |
背景
simpleperf抓取的火焰图能够有效的反映一段时间内CPU上的热点区域,perf.data中抓取的数据包含了采样周期内所有采样点的完整调用栈,堆栈采样不依赖预埋trace就可以提供更多的上下文信息,如果将调用栈在trace上按照时间线展开, 可以更方便地观察到trace中某个耗时方法中对应的具体时间点CPU究竟在执行哪些函数,从而更精准地定位性能问题,本工具在[基础工具]simpleperf2systrace工具开发使用说明的基础上做了如下改进:
- 简化使用方式,提供关注应用的 pid 和 tid 即可,默认按照10s时间抓取
- 全平台支持且兼容32位设备
- 通过切换 perfetto 的内置时钟源为 BUILTIN_CLOCK_PERF 实现两种trace的时间戳对齐
- 无需手动调节采样在trace上的偏移值
- 提供了额外的符号化能力
- simpleperf 默认使用on cpu模式抓取,perf默认使用最高频率10000
使用方式
- 解压zip包到本地的工作目录

- 配置python虚拟环境和脚本所需依赖
cd /Users/mi/Downloads/perf2perfectto
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt- 配置 ANDROID_NDK_HOME 环境变量


- 检查设备自带的 perfetto 版本
adb shell perfetto --versionadb root
adb remount
adb reboot
adb push prebuilts/android-arm64/perfetto /system/bin/perfetto
adb reboot🌰 使用2026_05_08版本可直接运行run.py 无需设置pid/tid 根据GUI引导即可完成抓取
- 查找抓取应用的pid和关注线程的tid
adb shell ps | grep ***
adb shell ps -T ***

- 配置参数执行 run.py 进行抓取
./run.py --pid 20203 --tid 20203,31149
用perfetto网页打开merged_trace.perfetto-trace即可查看合并后的结果


对于Flutter应用可以放置带符号的so到unstripped_libs目录

已知问题

- 新设备首次抓取可能出现时间轴对齐设置未生效导致hotfunc track为空,可重启手机后重新抓取
版本记录
2026/05/08
- 交互式选择器 直接运行run.py进入图形化菜单
- GPU 渲染追踪 提取 kgsl 事件,重建单帧GPU渲染生命周期
- SoC 自动检测 识别 Qualcomm/MediaTek,启用对应 GPU 配置
- Track 命名优化 com.miui.home (4198/RenderThread) 替代 4198 + hotfunc
- 时间戳对齐机制优化 统一 CLOCK_BOOTTIME,修复时钟域混合问题
[附件: LjPLbjrFYowxK1xbDowciBTfn5K]
2025/10/27
- simpleperf bin 目录下添加 Window 平台版本 simpleperf 可执行文件
[附件: A3jEbypJqoI5DhxomHfcmajZndh]
2025/10/16
[附件: I8sfbaBNtoCRKCxHSMWcGx7lnoc]
2025/10/10
[附件: HeLib0DdeomAogxgvBzcBby7nxm]