【阅读推荐】
Perfetto是Android Q中引入的全新下一代平台级跟踪工具,为Android、Linux和Chrome平台提供了一种通用的性能检测和跟踪分析工具集。其核心是引入了一种全新的用户空间到用户空间的跟踪协议,该协议基于protobuf序列化机制将抓取的数据填充到共享内存缓冲区,可用于获取平台内部的内置数据源(例如ftrace、atrace、logcat),也提供了SDK和Library给上层C++应用程序来实现定制。Perfetto允许通过一个可扩展的配置文件来对数据源抓取进行灵活动态配置,且可以将超长trace数据流记录到文件系统中。
在当前Android实现中,perfetto提供了用于记录系统和应用级trace的service和library、低开销的native+java heap分析工具,可供SQL分析trace文件的library,以及一个基于Web的可视化呈现界面 —— Perfetto UI。
传统systrace
Perfetto UI
Perfetto相比systrace的优势:
a. 操作、查询、定位、可视化分析标记方便快捷;
b. 其可持续记录较长的跟踪记录并导出到文件系统中;
c. 更强的拓展能力,支持扩展ftrace数据解析,解析器及呈现容易更新
d. 内建支持SQLite,通过SQL查询可以方便地进行数据后期处理;
二、使用及分析
1. perfetto trace抓取工具
官方命令行操作,config.pbtx为 trace配置,指定了要抓取的category、时长、buffer大小等信息,具体可参考: https://perfetto.dev/docs/quickstart/android-tracing
adb push config.pbtx /data/local/tmp/config.pbtx
adb shell 'cat /data/local/tmp/config.pbtx | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace'
2. UI展现
官方网址:https://ui.perfetto.dev/#!/
打开上述网址,点击Open trace file,选择本地录制好的perfetto trace或ftrace、systrace等文件