Android Systrace(1) -- 介绍和抓取

目录

1. 介绍systrace

2. 抓取systrace

2.1 systrace.py工具

2.2 Device Monitor(DDMS)

2.3 自定义systrace

3. 打开trace.html

4. 操作快捷键


 

1. 介绍systrace

 

一般来说,我们的机器以60帧/秒显示时(也就是16.6 millisecond),用户会感觉机器会流畅。如果出现显示时出现丢帧的情况,我们要知道系统在做什么。

systrace是Android4.1版本之后推出的,对系统Performance分析的工具。

systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等。在Android平台中,它主要由3部分组成:

  • 内核部分:Systrace利用了Linux Kernel中的ftrace功能。所以,如果要使用systrace的话,必须开启kernel中和ftrace相关的模块。
  • 数据采集部分:Android定义了一个Trace类。应用程序可利用该类把统计信息输出给ftrace。同时,Android还有一个atrace程序,它可以从ftrace中读取统计信息然后交给数据分析工具来处理。
  • 数据分析工具:Android提供一个systrace.py(python脚本文件,位于Android SDK目录/sdk/platform-tools/systrace中,其内部将调用atrace程序)用来配置数据采集的方式(如采集数据的标签、输出文件名等)和收集ftrace统计数据并生成一个结果网页文件供用户查看。

 

2. 抓取systrace

 

google systrace说明

有三种方式抓取systrace:

 

2.1 systrace.py工具

cd android-sdk/platform-tools/systrace python systrace.py --app=sectionName --time=10 -o mynewtrace.html sched gfx view wm

 

2.2 Device Monitor(DDMS)

可以使用Android Studio集成开发工具,切换到DDMS,点击devices,点击Systrace按钮

 

1.在sdk里打开Android Device Monitor

ubuntu@ubuntu:~/Android/Sdk/tools$ sudo ./monitor OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0

 

2.点击dump trace按钮配置好后,操作手机就会自动保存trace.html

 

选择要分析的进程(比如

com.google.process.gapps

),点击Capture system wide trace using Android systrace

(下图右上角箭头所指的地方)

抓取Systrace的方法

 

 

抓取过多次trace,请及时清理缓存

假如抓取过多次trace,为避免数据丢失,请及时清除缓存中的内容,清理地方在

Android Device Monitor

的右下角,如下图所示

及时清除缓存中的信息,防止抓取trace内容无效

 

2.3 自定义systrace

 

在代码里定义trace和加log是一样的

2.3.1 app层

import android.os.Trace; 
Trace.beginSection(String sectionName) 
Trace.endSection()

2.3.2 Java Framework

import android.os.Trace; Trace.traceBegin(long traceTag, String methodName) Trace.traceEnd(long traceTag) 抓取systrace分析。

2.3.3 Native framework层

#include <cutils/trace.h> ATRACE_CALL() 抓取systrace分析。

 

3. 打开trace.html

 

使用chrome浏览器,输入 chrome://tracing/ ,然后load trace文件打开

4. 操作快捷键

 

4.1 导航操作

导航操作

作用

w

放大,[+shift]速度更快

s

缩小,[+shift]速度更快

a

左移,[+shift]速度更快

d

右移,[+shift]速度更快

4.2 快捷操作

 

常用操作

作用

f

放大当前选定区域

m

标记当前选定区域

v

高亮VSync

g

切换是否显示60hz的网格线

0

恢复trace到初始态,这里是数字0而非字母o

一般操作

作用

h

切换是否显示详情

/

搜索关键字

enter

显示搜索结果,可通过← →定位搜索结果

`

显示/隐藏脚本控制台

?

显示帮助功能

 

对于脚本控制台,除了能当做记事本的功能,目前还不清楚有啥功能,或许还在开发中。

 

使用:

1. w s ad控制移动缩小,

2. 右边选择模式,1模式,箭头,可以点击查看信息,4,能够框区域,看时间

3. 数字0返回到中间

4.v可以显示16.6s一帧的网格

5.查看帧时间,选择frame上一帧,按m标记当前的区域,任意选中一段方法,按左键选中,m都可以看这段时间

6. 查看帧具体的事情,选中frame 圈圈,按f,放大选中区域

 

 模式切换

  • Select mode: 双击已选定区能将所有相同的块高亮选中;(对应数字1)
  • Pan mode: 拖动平移视图(对应数字2)
  • Zoom mode:通过上/下拖动鼠标来实现放大/缩小功能;(对应数字3)
  • Timing mode:拖动来创建或移除时间窗口线。(对应数字4)

可通过按数字1~4,用于切换鼠标模式; 另外,按住alt键,再滚动鼠标滚轮能实现放大/缩小功能。

 

参考链接

https://www.jianshu.com/p/00ef51716c3f

https://source.android.com/devices/tech/debug/systrace

https://www.androidperformance.com/2019/07/23/Android-Systrace-Pre/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章