本讲是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)来唯一标识线程和进程。