android 性能分析工具(01)systrace

关于下载systrace的特殊说明:谷歌官方在22年3月发布的33.0.1版本的platform-tools包中移除了systrace,需要使用systrace需要币33.0.1更低的sdk包,下载SDK历史版本的方法:


1 理解systrace

1.1 systrace历史背景(why)

systrace工具是 Android 4.1 推出后引入的分析设备性能的主要基础工具。systrace由Google Android和Google Chrome共同开发,是Catapul开源项目的一部分。 但本质上是是对 Linux Kernel中 ftrace 的封装。应用进程需要利用 Android 提供的 Trace 类来使用 Systrace。

总而言之,google想针对APP开发 自己弄一套性能分析工具 方便使用,systrace是开始,后面推出的Perfetto工具等均是如此,到了android CPU profiler工具 可以看到 已经整合到自己的Android Studio工具中了,越来越方便好用,这就是趋势。

1.2 systrace软件定位(what)

Systrace 本身是 性能分析的定向工具,即分析整体框架,然后找到性能问题的大方向。它的功能包括跟踪系统的 I/O 操作、内核工作队列、CPU 负载以及 Android 各个子系统,比如:View/ SurfaceFlinger / SystemServer / Kernel/Input/Display 等系统关键模块)的运行状况等。在 Android 平台中,主要由3部分构成:

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

2 systrace使用方法(how)

2.1 systrace常规操作

使用python systrace.py [....一些列参数] 命令生成trace.xml文件(关于systrace相关命令可以查看:Android 开发者之在命令行上捕获系统跟踪记录),比如:

python systrace.py -t 10 -o mytrace.html gfx input view am dalvik sched wm disk res -a com.bilibili

之后使用浏览器直接打开html文件。注意:在mac操作系统上使用Chrome打开trace.xml文件是空白的,解决办法是:在chrome地址栏中输入”chrome:tracing”,然后点击load按键加载你的trace.html文件。这样就可以读出来了,读出来效果如下所示:

那么这张性能图表怎么看以及怎么操作呢?参照文档-> Android 开发者之浏览 Systrace 报告

2.2 systrace自定义事件

同时除了系统自带的这些跟踪内容,如果想自定义一些信息用于跟踪(APP/Framework/native)该怎么做呢?这部分可参照文档: Android 开发者之定义自定义事件

2.3 systrace 终端直接捕获跟踪记录方法

当然这一系列操作下来 工程师还可以,但对一些产品、测试来讲就不是很友好了,那在手机上可不可以直接捕获设备上的跟踪记录呢?当然可以啦,只要版本android P以上,具体流程可以参考文档: Android 开发者之捕获设备上的系统跟踪记录

3 关于systrace的实战心得(个人理解,仅供参考)

systrace 主要是通过查看各个系统指标和指定应用的参数指标(颜色图块的查看)来分析性能问题的整体框架,通过该工具能确定问题的大方向。比如紫色过多有可能是GC过度、蓝色过多可能是系统资源不够、白色过多有可能是线程和锁导致的问题等等。

更多关于sysytrace的使用可以参照文档:Android 开源项目之 实战了解 Systrace

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图王大胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值