本讲是Android Camera性能分析专题的第36讲,我们介绍Perfetto 自动化之Trace Processor介绍。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
Trace Processor是什么
Trace Processor是一个C++库
-
输入:各种格式编码的Trace
-
输出:SQL接口
-
这个库被嵌入到很多Trace分析工具中
-
trace_processor 二进制文件
-
Perfetto UI, 作为一个WebAssembly模块
-
Android GPU Inspector
-
Android Studio
-
运行Trace Processor
下载并运行Trace Processor
可以到Github上下载基于Linux或Mac的可执行文件,单独运行:
# Download prebuilts (Linux and Mac only)
curl -LO https://get.perfetto.dev/trace_processor
chmod +x ./trace_processor
# Start the interactive shell
./trace_processor trace.perfetto-trace
示例:
替换Perfetto UI中的trace_processor
也可以用本地的trace_processor替换掉Perfetto UI中的trace_processor,执行如下命令
# Start a local trace processor instance to replace wasm module in the UI
./trace_processor trace.perfetto-trace --httpd
使用本地的trace_processor, Perfetto UI通过TCP与之通信好处:
-
无WASM 的内存限制,特别适用于加载大文件的Trace
-
SQL 查询的性能更好
运行Metrics
可以执行如下命令,运行Metrics
# 运行一个Metrics
./trace_processor --run-metrics android_cpu trace.perfetto-trace
# 同时运行多个Metrics
./trace_processor --run-metrics android_mem,android_cpu trace.perfetto-trace
# 输出binary格式(protobuf)
./trace_processor --run-metrics android_mem --metrics-output=binary trace.perfetto-trace
# 输出JSON格式
./trace_processor --run-metrics android_mem,android_cpu --metrics-output=json trace.perfetto-trace
Trace Processor中的线程和进程标识符
为什么不能直接使用PID/TID
- 在Android/Linux系统中pid/tid可能被重复使用,所以无法用pid/tid来唯一标识进程/线程
Trace Processor使用utid(unique tid))和upid(unique pid)来唯一标识线程和进程。