Systrace工具的使用
翻译原文地址:https://developer.android.com/studio/profile/systrace-commandline.html#requirements
通过抓取和展示app的执行次数,Systrace工具可以通帮助你分析app的性能问题,Systrace工具将android kernel层的数据比如CPU调度、disk activity以及应用线程收集起来,并生成HTML报告,在这个HTML报告里,可以看到指定时间内系统进程的所有情况。
systrace工具对于诊断应用的不流畅的问题非常有效,可以参照https://developer.android.com/studio/profile/systrace.html
要求
- SDK 版本20及以上
- python环境
- android4.1及以上设备(需打开调试模式)
- 可以通过用户界面去调用,也可以通过cmd的方式去调用
用户界面调用
- 打开Android studio,Tools -- Android -- Android Device Monitor,或则直接在sdk中的tools中找到Android Device Monitor打开
- 在弹出的Android Device Monitor中,左侧Devices选项卡的下面一排,点击下图中圈出的位置
- 配置trace信息,点击OK后,会在对应目录下生成html文件
CMD命令调用
CMD的在androi4.2及以下、android4.3级以上的用法是不一样的,用法如下“
$ python systrace.py [options] [category1] [category2] ... [categoryN]
android4.3及以上
在这个版本上,你可以不配置分类tag,也可以自定义。使用方式如下:
$ cd android-sdk/platform-tools/systrace
$ python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
提示:如果你想要查看task name,必须配置sched
命令行列表
选项 | 描述 |
---|---|
-h 或 --help | 查看帮助 |
-o <FILE> | 用于指定html文件的存放路径 |
-t N 或 --time=N | 用于指定抓取的时长,N为时长,单位为s,默认为5s,如果要指定10s,则”-t 10“ |
-b N或--buf-size=N | 用于指定缓存大小,N为大小 |
-k <KFUNCS> 或 --ktrace=<KFUNCS> | 指定activity的kernel方法,按逗号分割 |
-l 或 --list-categories | 列出可选的分类,不通的设备分类可能不同 |
-a <APP_NAME> 或 --app=<APP_NAME> | 开启app的trace,进程名按逗号分割,这些app必须有trace类的调用 |
--from-file=<FROM_FILE> | 根据指定的文件创建html,而不是实时的trace,<FROM_FILE>为源文件路径 |
-e <DEVICE_SERIAL> 或 --serial=<DEVICE_SERIAL> | 指定设备的序列号 |
android4.2及以下
在4.2之前的版本需要两部操作,首先,需要配置想要抓取的trace tag,然后再运行trace。比如:
$ cd android-sdk/platform-tools/systrace
$ python systrace.py --set-tags gfx,view,wm
$ adb shell stop
$ adb shell start
$ python systrace.py --disk --time=10 -o mynewtrace.html
命令行列表
选项 | 描述 |
---|---|
-h 或 --help | 查看帮助 |
-o <FILE> | 用于指定html文件的存放路径 |
-t N 或 --time=N | 用于指定抓取的时长,N为时长,单位为s,默认为5s,如果要指定10s,则”-t 10“ |
-b N或--buf-size=N | 用于指定缓存大小,N为大小 |
-d 或 --disk | 追踪activity disk的输入和输出,需要root设备 |
-i 或 --cpu-idle | 追踪CPU的idel事件 |
-l 或 --cpu-load | 追踪CPU的加载 |
-s或--no-cpu-sched | 防止CPU调度的追踪,通过降低trace buffer的速率达到加长的trace时长的目的 |
-u 或 --bus-utilization | 追踪bus的使用,需要root设备 |
-w 或 --workqueue | 追踪work queue,需要root设备 |
--set-tags=<TAGS> | 用于配置tag选项, |
对于上面的--set-tags配置,可选项如下:
- gfx 图形图像
- input 输入
- view 视图
- webview
- wm Window Manager
- am Activity Manager
- sync Synchronization Manager
- audio
- video
- camera
注意:设置tag后,需要重启framework(’adb shell stop;adb shell start‘)暴躁配置生效。
如何查看trace.html文件
按键 | 作用 |
---|---|
w | 放大时间轴 |
s | 缩小时间轴 |
a | 向左移动面板 |
d | 向右移动面板 |
e | 以当前鼠标的位置为时间轴的中心 |
g | 在选中的task开始时刻显示红线条 |
Shift+g | 在选中的task结束时刻显示红线条 |
向右箭头 | 选中当前时间轴下一个事件 |
向左箭头 | 选中当前时间轴下一个事件 |