第36讲 Perfetto 自动化之Trace Processor介绍 - Android Camera性能分

2024年10月30日 第36讲 Perfetto 自动化之Trace Processor介绍 极客笔记

本讲是Android Camera性能分析专题的第36讲,我们介绍Perfetto 自动化之Trace Processor介绍。

更多资源:

资源 描述
在线课程 极客笔记在线课程
知识星球 星球名称:深入浅出Android Camera
星球ID: 17296815
Wechat 极客笔记圈

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

本文链接:http://so.lmcjl.com/news/16600/

展开阅读全文