返回顶部
p

perfetto-analysePerfetto分析

>-

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
212
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

perfetto-analyse

Perfetto 分析与采集

何时使用本 Skill

  • - 需要命令行采集 Android Perfetto trace(adb + perfetto)
  • 需要编写或修改 trace 配置文件(.pbtx / TraceConfig)
  • 需要根据诉求分析 trace:卡顿(jank)、耗时、过度绘制、功耗等

一、Trace 采集

1.1 基本命令

本地设备(adb):

bash

使用文本格式配置(Android 10+ 推荐)


adb shell perfetto --txt -c - -o /data/misc/perfetto-traces/trace.pftrace < config.pbtx

或先把 config 推到设备再执行(Android 12+ 可写 /data/misc/perfetto-configs)

adb push config.pbtx /data/misc/perfetto-configs/ adb shell perfetto --txt -c /data/misc/perfetto-configs/config.pbtx -o /data/misc/perfetto-traces/trace.pftrace

拉取 trace 到本机:

bash
adb pull /data/misc/perfetto-traces/trace.pftrace .

长时采集(benchmark/CI): 用 perfetto --background 拿到 PID,结束时 kill $PID;或用 writeintofile: true + 较大 duration_ms 做流式写入。

1.2 配置结构要点

  • - buffers:至少一个;sizekb 建议 20480+(约 20MB)避免高事件率时丢数据;高吞吐与低频率数据源可分开 buffer(targetbuffer: 0/1),避免 ring buffer 冲掉慢数据。
  • durationms:采集时长(毫秒),不包含 suspend 时间。
  • datasources:每个 source 用 config { name: ... target_buffer: 0 ... },name 必须与数据源注册名一致。

常用 Android 数据源名称见 reference.md

1.3 按诉求选数据源

诉求建议启用的数据源 / 配置
CPU 调度linux.ftrace + ftraceevents(schedswitch, schedwakeup 等)
GPU / 渲染
linux.ftrace(含 atracecategories: gfx)、gpu.renderstages、gpu.counters | | 内存 | linux.processstats、可选 android.heapprofd / android.javahprof | | 渲染/合成 | atrace gfx、view;android.surfaceflinger.layers 等 | | 功耗 | android.power、ftrace 中 power/*(如 power/gpu_frequency) | | 卡顿/帧率 | 必须:ftrace + atrace gfx;建议:surfaceflinger、gpu 相关 |

编辑 config 时按上表勾选对应 data_sources 块,并保证 buffers 足够大。

二、编辑 Trace 配置文件

2.1 最小可运行示例(仅 CPU 调度)

text
duration_ms: 10000
buffers {
size_kb: 20480
fillpolicy: RINGBUFFER
}
data_sources {
config {
name: linux.ftrace
target_buffer: 0
ftrace_config {
ftraceevents: sched/schedswitch
ftraceevents: sched/schedwakeup
}
}
}

2.2 通用 UI/卡顿分析配置要点

  • - buffers:至少 20MB(如 20480),必要时多块 buffer 分离 ftrace 与 sysstats/heapprofd。
  • linux.ftrace:启用 sched/schedswitch、sched/schedwakeup;加 atracecategories: gfx、atracecategories: view 做渲染与 View 层级;需看指定应用时用 atraceapps: com.example.app。
  • android.surfaceflinger.layers / gpu.renderstages:按需开启,用于帧时间线与 GPU 阶段。
  • android.power:功耗分析时加上对应 androidpowerconfig。

具体字段与更多数据源见 reference.md。修改后用 adb shell perfetto --txt -c - -o /data/misc/perfetto-traces/out.pftrace < config.pbtx 验证能否正常采集。

2.3 Android 注意点

  • - Android 10 以下不支持 --txt,需用二进制 config。
  • 长 trace 可用 writeintofile: true、较大 durationms,并设 filewriteperiodms(最小约 100ms);buffer 建议 32MB+。
  • 非 root 且 Android 12 以下:config 用 stdin 传入,adb shell perfetto -c - -o ... 且 cat config.pbtx | adb shell perfetto --txt -c - -o ...。

三、Trace 分析

3.1 分析入口

  • - Perfetto UI:在 ui.perfetto.dev 打开 .pftrace / .perfetto-trace,看时间线(Scheduling、Frame Timeline、GPU、Binder、内存等)和 Query 面板。
  • 命令行查询:使用 Perfetto 自带的 traceprocessor 对 trace 文件做 SQL 查询,适合脚本和 CI。见 3.6。

3.2 卡顿(Jank)与帧率

  • - Frame Timeline:看 Present Type(早/准时/迟到)、Jank Type、On time finish、GPU Composition。
  • 常见 Jank 类型:AppDeadlineMissed(应用未按时完成)、BufferStuffing(队列堆积)、SurfaceFlinger GpuDeadlineMissed(GPU 合成超时)等。
  • 排查顺序:主线程是否被长任务/锁阻塞 → GPU 阶段是否过长 → Binder/GC 是否密集。

3.3 耗时与热点

  • - 在时间线上选中区间,看该区间内各 track 的时长分布。
  • Query (SQL):查 slice/event 的 duration 排序,定位耗时点。示例见下节。

3.4 过度绘制

  • - 结合 atrace 的 view 与 gfx:看 measure/layout/draw 的频次与时长;单帧内过多 draw 或重复的 layout 可作为过度绘制线索。
  • 若 trace 中有渲染层级或 SurfaceFlinger 数据,可结合 Frame Timeline 与 layer 信息看合成与绘制成本。

3.5 功耗

  • - 看 android.power 与 ftrace 中 power 相关事件(如 power/gpu_frequency、wakelock)。
  • 结合 CPU 调度与 wakeup:高唤醒、高 CPU 占用时段对应功耗热点。

3.6 SQL 查询(UI 或命令行 trace_processor)

Trace 的 SQL 可在 Perfetto UI 的 Query 面板执行,也可用 trace_processor 命令行工具在本地执行(同一套 PerfettoSQL)。

命令行用法:

bash

下载(Linux/macOS)


curl -LO https://get.perfetto.dev/trace_processor
chmod +x ./trace_processor

打开 trace 进入交互式 SQL shell

./trace_processor trace.pftrace

进入后直接输入 SQL,例如:

SELECT name, dur/1e6 AS dur_ms FROM slice WHERE dur > 1000 ORDER BY dur DESC LIMIT 20;

通过本 skill 提供的脚本调用 trace_processor(推荐在需要执行单条/文件内 SQL 时使用):

bash

依赖: pip install perfetto(或 pip install -r perfetto-analyse/scripts/requirements.txt)


python perfetto-analyse/scripts/querytrace.py -q SELECT name, dur/1e6 AS durms FROM slice WHERE dur > 1000 ORDER BY dur DESC LIMIT 20
python perfetto-analyse/scripts/query_trace.py -f query.sql
python perfetto-analyse/scripts/query_trace.py -q SELECT ... --csv

脚本内部通过 Perfetto 的 Trace Processor(Python API)加载 trace 并执行 SQL,输出制表符分隔或 CSV。分析 trace 时优先考虑直接运行该脚本并传入用户给出的 SQL 或查询诉求。

示例查询 1:slice 按耗时降序

sql
SELECT slice.name, slice.dur/1e6

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 perfetto-analyse-1776105544 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 perfetto-analyse-1776105544 技能

通过命令行安装

skillhub install perfetto-analyse-1776105544

下载

⬇ 下载 perfetto-analyse v1.0.0(免费)

文件大小: 9.77 KB | 发布时间: 2026-4-15 13:51

v1.0.0 最新 2026-4-15 13:51
Initial release of perfetto-analyse.

- Capture and analyze Android Perfetto traces via CLI and config files.
- Supports trace collection for CPU, GPU, memory, rendering, and power.
- Guides on editing TraceConfig (.pbtx) files for precise data capture.
- Includes instructions for analyzing jank, latency, overdraw, and power using Perfetto UI and trace_processor SQL.
- Provides ready-to-use config templates and SQL script integration for automated trace queries.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部