perf2perfetto工具使用说明

| 版本记录 | | 作者 | | 变更内容 | | 2026/05/09 | | 袁欣 | |

  • 新增交互式选择器,无需配置参数直接运行run.py进入图形化菜单进行抓取Screenshot 2026-05-09 at 10.51.38.png
  • 合并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 --version
adb 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]