Perfetto 上手指南2 —— 基础使用

持续更新中,有用的话,麻烦大佬们点个关注:

  • 001.Perfetto 上手指南1 ------ Trace 的抓取
  • 002.Perfetto 上手指南2 ------ 基础使用(本文)
  • 003.Perfetto 上手指南3 ------ CPU 调度分析
  • 004.Perfetto 上手指南4 ------ Input 分析
  • 005.Perfetto 上手指南5 ------ 窗口显示过程分析
  • 006.Perfetto 上手指南6 ------ 卡顿问题分析
  • 007.Perfetto 上手指南7 ------ App 冷启动过程分析
  • 008.Perfetto 上手指南8 ------ 内存分析
  • 009.Perfetto 上手指南9 ------ 开机流程分析
  • 010.Perfetto 上手指南10 ------ 如何自定义Trace
  • 011.Perfetto 上手指南11 ------ SQL 分析入门

1. 进入 Perfetto Trace 分析界面

如果是使用 record_android_trace 命令或者 Perfetto UI 抓取 Trace 后,会自动打开 Perfetto Trace 界面。

如果是使用 perfetto 命令抓取 Trace ,需要手动打开 Perfetto Trace 界面。打开的方法如下:

使用浏览器打开 ui.perfetto.dev/ 界面如下:

可以把 trace 文件直接拖到浏览器中,也可以通过左上角的 Open trace file 打开 trace 文件。

2. Perfetto Trace 界面基本内容

Perfetto Trace 界面大致可分为 4 个区域:

  • 操作区,主要用到 Current Trace 下的几个选项
    • Show timeline :显示当前 Trace,切到了别的界面之后,再点这个就会回到 Trace View 界面
    • Query:写 SQL 查询语句和查看执行结果的地方
    • Metrics:官方默认帮你写好的一些分析结果
    • Info and stats :当前 Trace 和手机 App 的一些信息
  • 信息区:时间与搜索。
  • Trace 内容区:图形化展示 Trace 的区域
  • 信息区:展示Trace 内容区中选择中的元素的详细信息

Trace 内容区中主要有以下一些元素:

2.1 slice,片段

鼠标单击后会有一个黑框包围住,信息区会显示相关信息:

slice 代表了一段代码的执行过程,在代码中起于 Trace.traceBegin \ ATRACE_BEGIN,终于 Trace.traceEnd \ ATRACE_END

java 复制代码
  Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "bindApplication");
  AppBindData data = (AppBindData)msg.obj;
  handleBindApplication(data);
  Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);

2.2 counter,计数器

用于记录一些关键数据

对应于代码中的 Trace.traceCounter/ATRACE_INT

cpp 复制代码
    ATRACE_INT(ftl::Concat("HW_VSYNC_", displayIdOpt->value).c_str(),
    displayData.vsyncTraceToggle);

2.3 CPU Sched Slice, cpu 调度片段

用于展示 cpu 的调度情况

2.4 thread_state,线程状态

点击片段上方线程调度信息片段(Running),可以看到线程当前运行在哪个CPU上

点击信息区中的 Running on CPU 7 旁边的斜箭头:

就可以跳转到 CPU 调度区域中:

再次点击信息区域的斜箭头,可以回到原来位置

这里选择的 thread_state 是 App 的主线程,由用户点击屏幕唤醒运行,实际很多线程都是由其他线程/进程唤醒的,比如在 CPU 调度区域中选择一个 Slice:

信息区右侧的意思是当前 thread 由 P(Process)/system/bin/surfaceflinger [584] 中的 T(Thread)app [689] 唤醒。

线程从就绪到运行延迟了 48us 381ns

3 Perfetto Trace 界面基本操作

3.1 常用的快捷键

  • 快捷键 f 可以放大选中。
  • 快捷键 q,可以快速打开关闭信息区。
  • 在 Trace 内容区中,可以通过 w/s 按键缩小放大界面, a/d 移动界面。

3.2 标记操作

标记操作可以让我们更方便的找到我们关注的 Slice,具体的,当我们选中一个片段时,点击 m,就可以做一个临时的标记,当标记另一个 Slice 以后,前一个零时标记就会取消。选中一个片段以后,如果点击 shift + m,就会添加一个普通标记,当标记另一个片段以后,普通标记不会被取消。

标记以后,会出现两个小三角:

点击小三角后,信息区会出现一个 remove 按键:

点击即可取消

3.3 插旗子

在上方区域的信息区中的时间轴上,点击鼠标左键,可以插上一些旗帜,这些旗帜可用用于标记一些事件的关键节点.

选中旗帜后,通过下方信息区域中的 remove 按键,可以取消旗帜

3.4 Pin 操作

我们可以通过 Pin 按钮,可以将这一行的信息 pin 到最上方,在我们需要了解特定一些信息时,非常有用:

相关推荐
安东尼肉店5 小时前
Android compose屏幕适配终极解决方案
android
2501_916007476 小时前
HTTPS 抓包乱码怎么办?原因剖析、排查步骤与实战工具对策(HTTPS 抓包乱码、gzipbrotli、TLS 解密、iOS 抓包)
android·ios·小程序·https·uni-app·iphone·webview
feiyangqingyun7 小时前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg
用户20187928316711 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子11 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜822711 小时前
安卓接入Max广告源
android
齊家治國平天下11 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO11 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel11 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢11 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱