Systrace 和 Perfetto的使用

1. Systrace


1.1 Systrace简介

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


1.2. Systrace使用

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

Systrace 和 Perfetto的使用_第1张图片

1.2.2.命令行抓取systrace

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

其中options可取值:

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

不同版本支持的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文件
Systrace 和 Perfetto的使用_第2张图片


1.2.5. 抓取结果

Systrace 和 Perfetto的使用_第3张图片
横轴为时间轴
竖轴最上面CPU和IRQ相关信息,底下为进程和线程相关信息,右边为函数调用流程
Systrace 和 Perfetto的使用_第4张图片

Systrace 和 Perfetto的使用_第5张图片

Systrace 和 Perfetto的使用_第6张图片
Start 开始时间
Wall Duration 持续时间

Systrace 和 Perfetto的使用_第7张图片
右上角的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界面

Systrace 和 Perfetto的使用_第8张图片


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. 抓取结果

Systrace 和 Perfetto的使用_第9张图片
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

你可能感兴趣的:(Android,android)