perfetto基础+抓取方法+导入+分析

perfetto抓取与导入

https://developer.android.com/tools/perfetto?hl=zh-cn

常用方法

抓取(分解步骤)

  1. adb 连接设备,adb shell 进入 shell环境执行下面命令;
  • -t表示抓几秒的;
  • o表示抓完输出到哪儿;
  • 后面的tag表示抓取哪些信息
perfetto -o /data/misc/perfetto-traces/111.perfetto-trace -t 60s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
  1. 导出perfetto,到本地
    adb pull /data/misc/perfetto-traces/111.perfetto-trace .
    在这里插入图片描述
  2. 浏览器打开网址,并导入文件
    https://ui.perfetto.dev/
    在这里插入图片描述

google脚本工具(合并)

google提供了原生工具给我们使用,方法如下
首先也是需要adb连接设备

// 进入源码路径
cd /src/aosp/aosp13_r6/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

  • -b为文件大小限制
  • -t为时间间隔

抓取后会自己打开google chrome网址

perfetto分析

线程状态

  • running:运行态

在这里插入图片描述

  • runnable:待调度(点击可查看被唤醒时的waker process 、thread)
    在这里插入图片描述

  • Uninterruptible Sleep:不可中断休眠(IO或者非IO)
    un

计数值

在这里插入图片描述

异步执行块

在这里插入图片描述

跨进程调用跟踪

binder transact:同步调用,调用端
binder reply:同步调用,接收端
在这里插入图片描述

binder transaction async:异步调用,调用端
binder recv async:异步调用,接收端
在这里插入图片描述
在这里插入图片描述

如何自己加tag(cpp)

条件:

  • 需要在mk/bp文件引入系统lib
    "libutils",

  • 需要引入头文件
    #include <utils/Trace.h>

  • 引入

#undef ATRACE_TAG
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值