systrace
官网资料: source.android.google.cn/devices/tec…
systrace是什么?
systrace 是分析 Android 设备性能的主要工具,也是平台提供的旧版命令行工具( Android 10后引入了Perfetto),可用于获得系统跟踪的信息。其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和应用线程。帮助分析提升应用性能。
怎么使用systrace?
1. 从测试设备本身录制跟踪记录
developer.android.google.cn/topic/perfo…
a. 进行trace设置。
在手机上进入“Settings”→“Developer options”→“System Tracing”→选择"Long traces"(该项可以不限制traces时长,由自己决定截取多长的trace)和其他设置(抓取的trace具体categories类型等)。
b. 抓取相关trace。
点击"Record trace"开始录制→进行相关复现问题的操作→手机下拉点击快捷设置面板的"stop tracing"→通过分享或者pull方式将trace文件导入电脑。
c. 查看trace信息。
生成的文件名一般为“trace-holi-版本-日期-时间.perfetto-trace”。通过谷歌浏览器,打开网页“ui.perfetto.dev/”,点击load加载文件查看trace文件内容。
打开文件后,界面如下:
2. 命令行
官方指导: developer.android.google.cn/topic/perfo…
a. 找到systrace.py 文件。
systrace
命令在 Android SDK 工具软件包中提供,并且可以在 android-sdk/platform-tools/systrace/
中找到。
b. 输入命令。
python systrace.py gfx rs input view sched am wm dalvik freq idle load sync workq powerdisk sm hal res binder_driver binder_lock -a com.example.mytest -b 20480 -t 10 -o ~/share/trace_t.html
分析上一行命令的各个参数: python systrace.py [需要跟踪的类别,如:gfx rs input view sched am wm dalvik freq idle load sync workq powerdisk sm hal res binder_driver binder_lock] -a [包名,例如:com.example.mytest] -b [buffer大小,如:20480] -t [时间:单位为秒。如:10] -o [输出文件路径,如:~/share/trace_t.html]
c. 查看trace信息。
然后在谷歌浏览器中输入chrome://tracing/,点击load按键载入生成的html文件。
载入trace.html文件后,页面显示如图。
PS :命令行参数介绍
-
参数介绍:
python ``[systrace.py](http://systrace.py)
optionsoptions 描述 -o < FILE > 输出的目标文件 -t N, –time=N 执行时间,单位为秒。默认5s -b N, –buf-size=N buffer大小(单位kB),用于限制trace总大小,默认无上限 -k < KFUNCS >,–ktrace=< KFUNCS > 追踪kernel函数,用逗号分隔 -a < APP_NAME >,–app=< APP_NAME > 追踪应用包名,用逗号分隔 –from-file=< FROM_FILE > 从文件中创建互动的systrace -e < DEVICE_SERIAL >,–serial=< DEVICE_SERIAL > 指定设备 -l, --list-categories 列举可用的tags,即查看支持跟踪的类别 -h 显示帮助 其中-l命令列举出的tags有
categories | 描述 |
---|---|
sched | CPU调度的信息,非常重要;你能看到CPU在每个时间段在运行什么线程;线程调度情况,比如锁信息。 |
gfx | Graphic系统的相关信息,包括SurfaceFlinger,VSYNC消息,Texture,RenderThread等;分析卡顿非常依赖 |
view | View绘制系统的相关信息,比如onMeasure,onLayout等;对分析卡顿比较有帮助。 |
am | ActivityManager调用的相关信息;用来分析Activity的启动过程比较有效。 |
binder_driver | Binder驱动的相关信息,如果你怀疑是Binder IPC的问题,不妨打开这个。 |
core_services | SystemServer中系统核心Service的相关信息,分析特定问题用。 |
.... | ..... |
3. 在monitor中捕捉。
a. 启动monitor。
找到monitor目录:Android/Sdk/monitor。启动终端输入 ./monitor.
monitor界面如下:
b. 抓取相关trace。
连接需要抓trace的手机(手机进入开发者模式,启动usb调试功能)。之后即可选中手机,选择相关设置,开始抓trace。
c. 查看trace信息。
抓完trace,在chrome://tracing/打开文件。
PS:个别手机无法通过monitor抓取trace文件,亦或者生成的trace文件无法打开。
如何查看trace信息?
查看信息的网址
旧版:谷歌浏览器输入 chrome://tracing/,点击load加载文件查看trace文件内容。主要打开.html格式的trace。
新版:打开网页“ui.perfetto.dev/”,点击load加载文件查看trace文件内容。主要打开.perfetto-trace格式的trace。
跟踪记录格式之间的转换
我们可以将 Perfetto 跟踪文件转换为 Systrace 格式。如需了解详情,可以参阅跟踪记录格式之间的转换。
curl -LO https://get.perfetto.dev/traceconv
chmod +x traceconv
./traceconv [text|json|systrace|profile] [input proto file] [output file]
操作快捷键
导航操作 | 作用 |
---|---|
w | 放大,[+shift]速度更快 |
s | 缩小,[+shift]速度更快 |
a | 左移,[+shift]速度更快 |
d | 右移,[+shift]速度更快 |
模式切换操作 | 作用(可通过按数字1~4,用于切换鼠标模式; 另外,按住alt键,再滚动鼠标滚轮能实现放大/缩小功能。) |
---|---|
1 | 选择模式,双击将高亮相同任务 |
2 | 平移模式,拖动平移视图 |
3 | 缩放模式,拖动鼠标实现放大/缩小 |
4 | 时移模式,拖动来创建或移除时间窗口线 |
常用操作 | 作用 |
---|---|
f | 放大当前选定区域 |
m | 标记当前选定区域 |
v | 高亮VSync |
E | 将当前鼠标位置在时间轴上居中 |
g | 切换是否显示60hz的网格线 |
Shift + G | 在当前选定任务的结束处显示网格 |
0 | 恢复trace到初始态,这里是数字0而非字母o |
Left Arrow | 在当前时间轴上选择上一个事件。 |
Right Arrow | 在当前时间轴上选择下一个事件。 |
一般操作 | 作用 |
---|---|
h | 切换是否显示详情 |
/ | 搜索关键字 |
enter | 显示搜索结果,可通过← →定位搜索结果 |
` | 显示/隐藏脚本控制台 |
? | 显示帮助功能 |
常用使用:
- w s ad控制移动缩小,
- 右边选择模式,1模式,箭头,可以点击查看信息,4,能够框区域,看时间
- 数字0返回到中间
- v可以显示16.6s一帧的网格
- 查看帧时间,选择frame上一帧,按m标记当前的区域,任意选中一段方法,按左键选中,m都可以看这段时间
- 查看帧具体的事情,选中frame 圈圈,按f,放大选中区域
\