Systrace 和 Perfetto的使用

1. Systrace


1.1 Systrace简介

Systrace 是平台提供的旧版命令行工具,可记录短时间内的设备活动,并保存在压缩的文本文件中。该工具会生成一份报告,其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和应用线程


1.2. Systrace使用

1.2.1. sdk\tools\monitor.bat 图形工具抓取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ChsLS4Ja-1643285084813)(D:\rom\总结\markdown\wpsBEEF.tmp.jpg)]

1.2.2.命令行抓取systrace

python systrace.py [options] [category1] [category2] ... [categoryN]

其中options可取值:

*options**解释*
-o 输出的目标文件
-t N, –time=N执行时间,默认5s
-b N, –buf-size=Nbuffer大小(单位kB),用于限制trace总大小,默认无上限
-k ,–ktrace=追踪kernel函数,用逗号分隔
-a <APP_NAME>,–app=<APP_NAME>追踪应用包名,用逗号分隔

不同版本支持的category不一样,在平台上通过命令查询:atrace --list_categories

gfx - Graphics
input - Input
view - View System
webview - WebView
wm - Window Manager
am - Activity Manager
sm - Sync Manager
audio - Audio
video - Video
camera - Camera
hal - Hardware Modules
res - Resource Loading
dalvik - Dalvik VM
rs - RenderScript
bionic - Bionic C Library
power - Power Management
pm - Package Manager
ss - System Server
database - Database
network - Network
adb - ADB
vibrator - Vibrator
aidl - AIDL calls
nnapi - NNAPI
rro - Runtime Resource Overlay
pdx - PDX services
sched - CPU Scheduling
irq - IRQ Events
i2c - I2C Events
freq - CPU Frequency
idle - CPU Idle
disk - Disk I/O
sync - Synchronization
workq - Kernel Workqueues
memreclaim - Kernel Memory Reclaim
regulators - Voltage and Current Regulators
binder_driver - Binder Kernel driver
binder_lock - Binder global lock trace
pagecache - Page cache
memory - Memory
gfx - Graphics (HAL)
ion - ION allocation (HAL)

systrace.py文件位置

  1. platform-tools\systrace
  2. 源码目录external\chromium-trace

电脑收集trace,需要提前安装python,并且一定要注意是python 2.x

python systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq

1.2.3. atrace抓取(adb shell或uart下)

atrace -z -b 40000 am wm view res ss gfx  view hal bionic pm sched irq freq idle disk mmc sync workq binder_driver binder_lock pagecache memreclaim dalvik input -t 15 -o /data/local/tmp/trace_output

通过systrace.py将trace_output生成trace_output.html

systrace.py --from-file trace_output -o trace_output.html

1.2.4. 注意:

atrace抓取的文件需要通过systrace.py转成html,其它抓取方法直接用谷歌浏览器打开即可,如果有遇到浏览器打不开的情况,在浏览器中输入chrome://tracing/,然后Load对应的trace文件
在这里插入图片描述


1.2.5. 抓取结果

在这里插入图片描述
横轴为时间轴
竖轴最上面CPU和IRQ相关信息,底下为进程和线程相关信息,右边为函数调用流程
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Start 开始时间
Wall Duration 持续时间

在这里插入图片描述
右上角的processes可以过滤进程

1.2.6. 快捷操作

*导航操作**作用*
w放大,[+shift]速度更快
s缩小,[+shift]速度更快
a左移,[+shift]速度更快
d右移,[+shift]速度更快
*常用操作**作用*
f****放大****当前选定区域
m****标记****当前选定区域
v高亮****VSync****
g切换是否显示****60hz****的网格线
0恢复trace到****初始态****,这里是数字0而非字母o

2. Perfetto简介和使用

2.1. Perfetto简介

Perfetto 是 Android 10 中引入的全新平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的更加通用和复杂的开源跟踪项目

Perfetto网址: https://ui.perfetto.dev/


2.2.Perfetto界面

在这里插入图片描述


2.3. Perfetto的使用


### 2.3.1. 设置对应的属性
adb shell setprop persist.traced.enable 1

2.3.2. 抓取trace

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

2.3.4. 抓取结果

在这里插入图片描述
perfetto的操作和systrace的操作类似,界面更加美观,进程相关信息显示更全,分析相关问题时,可以两者结合的方式来分析


3 好文推荐

https://developer.android.google.cn/topic/performance/tracing
https://perfetto.dev/docs/quickstart/android-tracing#recording-a-trace-through-the-perfetto-ui
https://developer.android.google.cn/topic/performance/tracing/command-line
https://developer.android.google.cn/studio/command-line/perfetto
https://zhuanlan.zhihu.com/p/82522750

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值