systrace/perfetto抓取方式分享

背景

近来有一些同学反馈性能分析,现在大部分都是其实已经开始使用perfetto了,连sdk上都已经找不到哦systrace相关工具,让马哥可以分享一些这个相关内容,其实以前企业里面那时候大部分都是使用老版本systrace的,相比新版本的perfetto确实功能上要差一些,今天就带大家来探索一下相关的perfetto抓取方法

手机上离线抓取方式:

离线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

抓取后导出相关trace到chrome上打开:

adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace
网站打开trace:
打开链接:
https://ui.perfetto.dev/

针对可能不支持perfetto版本可以,离线抓取atrace方式

开始抓取

adb shell "atrace -c  -t 10 sched freq idle am wm gfx view binder_driver hal dalvik camera input res gfx view wm am ss video camera hal res sync idle binder_driver binder_lock ss  --async_start"

停止抓取并把trace导出到sdcard

adb shell atrace --async_stop -z -c -o /sdcard/atrace_normal.atrace

然后atrace手机上pull出来既可以

adb pull /sdcard/atrace_normal.atrace

直接观看atrace:
打开链接:
https://ui.perfetto.dev/
在这里插入图片描述

手机连线电脑抓取perfetto(强烈推荐):

这里没有采用chrome浏览器直接抓取方式,而是使用了的源码的中自带的record_android_trace工具
具体的record_android_trace路径是在aosp源码的如下目录
aosp/external/perfetto/tools

具体抓取命令:

test@test:~/aosp/external/perfetto/tools$ ./record_android_trace -o $(date +%Y%m%d_%H%M%S)_trace_file.perfetto-trace -t 5s -b 32mb sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory gfx view wm am ss video camera hal res sync idle binder_driver binder_lock ss
Running perfetto --background --txt -o /data/misc/perfetto-traces/2023-10-01_13-06-0d9a0e.pftrace -t 5s -b 32mb sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory gfx view wm am ss video camera hal res sync idle binder_driver binder_lock ss

以上抓取后直接自己会打开相关的chrome的浏览器

在这里插入图片描述
更多干货视频内容可以关注公众号或者b站up主(千里马学框架)

<think>嗯,用户想了解Perfetto性能分析工具的介绍和使用方法。首先,我需要确认用户的需求是什么。他们可能是一个开发者,或者是对性能优化感兴趣的人,想要学习如何使用Perfetto来分析应用的性能问题。接下来,我得整理Perfetto的基本信息,比如它的定义、主要功能和特点。然后是关于使用方法的步骤,可能需要分点说明,比如如何开启调试模式、录制性能数据、分析数据等。还要考虑用户可能遇到的问题,比如如何安装Perfetto,或者如何解读数据结果。此外,用户提供的引用材料里提到了Perfetto可以结合systrace和logcat,以及分析内存问题,这些信息需要整合到回答中。同时,用户示例中的相关问题部分,我应该生成几个相关的问题,比如与其他工具的比较、常见问题解决方法、内存分析步骤等。要确保回答结构清晰,符合用户要求的格式,使用中文,数学公式用$...$,独立公式用$$...$$。另外,注意引用标识的正确添加,比如在提到性能分析工具时引用[^1]和[^2]。最后,检查LaTeX语法是否正确,避免格式错误。可能还需要考虑用户的实际使用场景,比如在Android开发中的应用,或者系统级性能分析,从而给出具体的操作步骤或示例。总之,回答需要全面覆盖Perfetto的介绍和使用方法,同时引导用户进一步探索相关问题。</think>### Perfetto性能分析工具介绍 Perfetto 是一款开源的系统级性能分析工具,由Google主导开发,主要用于Android和Linux系统的性能跟踪与分析。它集成了多种功能,包括**CPU调度、内存分配、进程状态、文件I/O、网络活动**等维度的数据采集与分析。其核心优势在于: 1. **多数据源整合**:支持将系统调用(systrace)、日志(logcat)、内核事件等数据统一在时间轴上展示。 2. **高效低开销**:采用零拷贝环形缓冲区技术,减少对系统性能的影响。 3. **跨平台支持**:可通过Web UI或本地工具链分析数据,兼容Windows、macOS和Linux。 #### 核心功能对比 $$ \begin{array}{|c|c|c|} \hline \text{功能} & \text{Systrace} & \text{Perfetto} \\ \hline \text{数据整合} & \text{仅系统调用} & \text{系统调用+日志+内存} \\ \hline \text{内存分析} & \text{不支持} & \text{支持ion/dma_buf泄漏检测} \\ \hline \text{可视化} & \text{独立工具} & \text{Web UI交互式分析} \\ \hline \end{array} $$ ### 使用方法详解 #### 1. 启用调试模式 ```bash # Android设备需开启跟踪服务 adb shell setprop persist.traced.enable 1 ``` #### 2. 录制性能数据 通过**Perfetto配置文件**(`.pbtx`)定义采集规则: ```text duration_ms: 10000 buffers: { size_kb: 8960 fill_policy: DISCARD } data_sources: { config { name: "linux.process_stats" target_buffer: 0 } } ``` #### 3. 数据采集与导出 ```bash # 启动录制(生成trace.pb文件) adb shell perfetto --config :test --out /data/misc/perfetto-traces/trace.pb # 导出到本地分析 adb pull /data/misc/perfetto-traces/trace.pb ``` #### 4. 数据分析技巧 - **时间轴缩放**:使用`WASD`键快速导航 - **切片查询**:在搜索框输入`slice_name = "binder_transaction"` - **内存统计**:点击`Memory`面板查看进程的**RSS**和**Swap**变化 ### 典型案例分析 在Android应用启动优化中,通过Perfetto可发现: 1. **主线程阻塞**:定位`Choreographer#doFrame`耗时 2. **IPC调用堆积**:分析`binder_transaction`的调用链 3. **内存抖动**:检测`malloc/free`高频调用区域[^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值