Perfetto 使用 笔记

抓取命令

抓取

adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 10s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory

导出命令

adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace

打开工具

PerfettoUI

快捷键

可以查看工具栏左侧部分,以下是常用部分:

W:放大
S:缩小
A:左移
D:右移
M:选中当前鼠标点击的时间段

pip to top 功能很实用,可以远距离几项聚合来看。还有搜索功能,知道名称效率更高。

主要内容分类

线程状态

  1. 线程状态
  2. 执行方法

Counter 计数采用部分信息

一个程序里面全局的一个变量值展示,比如在surfaceFlinger的vsync 的部分值

asycn 执行

### 如何使用 Perfetto 进行性能跟踪和调试 #### 安装与配置 为了开始使用 Perfetto,需先安装并设置环境。可以从官方GitHub仓库下载源码或二进制文件[^1]。 #### 基本概念介绍 Perfetto是一个生产级的开源性能工具栈,旨在帮助开发者进行系统级和应用级别的性能分析和跟踪工作。其核心功能包括但不限于收集、处理以及展示来自不同平台的数据流,这些数据可以用来诊断应用程序的行为模式及其对底层硬件的影响程度[^3]。 #### 启动追踪会话 启动一次新的追踪可以通过命令行界面完成,在此之前应该确保已经正确设置了`PERFETTO_TRACING_SERVICE`环境变量指向本地运行的服务实例地址。对于大多数情况,默认值即可满足需求;而对于更复杂的场景,则可能需要自定义参数来调整采集频率或者其他行为特性[^2]。 ```bash # 开始一个新的追踪会话 $ perfetto --txt -o /path/to/output.trace proto://android/capture_config.proto ``` 上述命令将会创建一个名为`output.trace`的新文件保存捕获到的信息,并按照指定路径存储下来以便后续查看或者分享给他人做进一步的研究之用。 #### 数据解析与查询 一旦获得了原始日志资料之后,就可以利用内置的支持SQL语法的功能来进行高效检索操作了。这使得即使面对海量的日志条目也能够迅速定位感兴趣的部分,从而加快问题排查的速度。下面给出了一段简单的Python脚本来演示如何连接至数据库并对其中的内容执行基本的选择语句: ```python import sqlite3 conn = sqlite3.connect('/path/to/output.trace') cursor = conn.cursor() query = """ SELECT ts, name FROM slice WHERE dur > 0 ORDER BY ts ASC LIMIT 10; """ for row in cursor.execute(query): print(row) conn.close() ``` 这段代码片段展示了怎样通过SQLite接口读取trace文件中的时间戳(`ts`)字段同事件名称(`name`)之间的关联关系,并筛选出持续时间大于零秒的所有切片(slice),最后按发生时刻升序排列取出前十个结果输出显示出来。 #### 可视化分析 除了依靠纯文本形式展现外,还可以借助于专门设计过的Web UI组件实现更加直观的效果呈现方式。只需打开浏览器访问[Perfetto WebUI](https://ui.perfetto.dev/)页面并将先前导出得到的`.trace`格式档案拖拽上传进去就可以了。该界面上集成了多种图表样式可供选择,允许用户根据不同视角深入理解整个系统的运作机制。 #### 学习更多 想要深入了解Perfetto的各项特性和最佳实践案例的话,建议参考项目主页上的文档资源,那里不仅有详尽的操作指南还有丰富的实战经验总结等待着大家去发掘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值