Systrace 是用于收集和检测设备在运行过程中的时序信息的一个脚本工具,它结合了来自Android内核的数据,例如CPU调度程序,磁盘活动和应用程序线程,最终会以HTML的形式报告。
如何使用systrace
- Step1.安装systrace
在android studio中,Tools -> Android -> SDK Manager -> SDK Tools,点击Android SDK platform-Tools并安装,安装完成后,进入/platform-tools/systrace中,systrace脚本便位于这里。 - Step2.安装python
systrace是一个python脚本,因此需要安装Python才能运行:
sudo apt-get install python3.6
- Step3.连接手机
使用USB连接要测试的手机,并打开USB调试开关。
完成以上步骤,就可以进入android-sdk/platform-tools/systrace使用systrace了,下面来看看运行systrace时的一些命令。
命令
systrace运行的命令格式如下:
python systrace.py [options] [category1 [category2 ...]]
options表示选项,category表示需要抓取的trace类别,默认抓取所有的类别,也可以进行指定。
常用options有:
| Global options | Description |
|---|---|
| -h |–help | 获取帮助信息. |
| -l | --list-categories | 列出连接设备上所有的trace category. |
| -o file.html | 指定一个报告结果的html文件 |
| -t N | 设定一个时间(秒),到达时间后,自动结束,不指定时按Enter键结束 |
如:
$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \
binder_driver hal dalvik camera input res
可以通过如下命令查看所有的category:
$ python systrace.py -l
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
pdx - PDX services
sched - CPU Scheduling
irq - IRQ Events
i2c - I2C Events
freq - CPU Frequency
idle - CPU Idle
disk - Disk I/O
load - CPU Load
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
NOTE: more categories may be available with adb root
其他的选项使用较少,就不列举了。
通过以上的这些命令,最终将会获得html类型的报告结果,下面我们就看看如何分析该HTML报告。
查看报告
通过chrome浏览器打开html报告,将会出现类似如下图的结果:

左侧这一栏表示各个进程中trace的TraceName,中间则是各个Trace对应的时间轴,可以看到由各种颜色标记。其中绿色表示正常,其他颜色如红色、黄色则表示需要优化。
调查UI性能
Frames
正常情况下,大约以每秒60帧,一帧约16.6ms的速率渲染,如果超过这个时间,F圆圈就会变成红色或者黄色.这时可以点击F圆圈,会给出详细信息,以及可能的解决方案,如下图所示:

对于Android 5.0(API level 21)或者更高的设备,渲染帧的工作在UI Thread和Render Thread这两个线程当中。对于更早的版本,则所有工作在UI Thread上进行.
Alerts
当点击较慢的渲染后(红色F圆圈),会在报告的底部窗格中看到Alert.此外还可以通过点击右侧栏"Alerts"查看所有的警报,通常,一个区域的微小变化或改进可以消除应用程序中的整个警报类别。
在Alert一栏中,列出了所有的Alert,点击后可以查看详细的信息:

点击单个Alert后:

快捷键
以下是操作HTML报告的快捷键,通过这几个键,可以对整个报告进行放大,缩小,搜索,高亮等操作,可以快速的查看测试过程中哪里耗时较多。
| Key | Description |
|---|---|
| W | 放大时间线 |
| S | 缩小时间线 |
| A | 左移时间线 |
| D | 右移时间线 |
| f | 放大当前所选部分 |
| 0 | 恢复缩放和平移 |
| E | 时间轴置于当前鼠标位置的中心 |
| G | 从所选任务端的开始处显示网格 |
| Shift + G | 从所选任务端的结束处显示网格 |
| -> | 在当前选定的时间轴上选择下一个事件 |
| <- | 在当前选定的时间轴上选择上一个事件 |
| m | 高亮显示所选部分 |
| ? | 显示帮助 |
| / | 搜索字段 |
| Enter | 逐步搜索结果 |
本文介绍了Android性能工具Systrace的使用方法,包括安装、连接手机、运行命令及分析报告。通过Systrace收集的时序信息,可以深入调查UI性能,如帧率分析和警告信息,帮助开发者优化应用性能。


被折叠的 条评论
为什么被折叠?



