一、systrace简介
Systrace 是 Android4.1 中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。
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目录/platform-tools/systrace 中,其内部将调用 atrace 程序)用来配置数据采集的方式(如采集数据的标签、输出文件名等)和收集 ftrace 统计数据并生成一个结果网页文件供用户查看。 从本质上说,Systrace 是对 Linux Kernel中 ftrace 的封装。应用进程需要利用 Android 提供的 Trace 类来使用 Systrace.
二、systrace的使用
1、配置python环境
安装python,必须使用python 2.7的版本
使用我提供的安装包或者根据以下方法去官网下载安装包
官网下载方法:
- 可以去python官网下载安装,我这里安装的是2.7.16版本
- 安装windows扩展文件
打开https://pypi.org/project/pypiwin32/219/#files,下载以下两个文件并安装:
2、安装完成后,python -V查看python版本是否正确,如果不正确,排查下环境变量配置是否正确。
3、systrace工具在Andorid-SDK目录下的platform-tool里面
连上adb,在DOS窗口执行以下命令可以抓取systrace信息,最后生成一个systrace.html文件:
python systrace.py -t 10 -b 40960 gfx freq sched input view am wm power idle sync ion memory irq freq -o systrace.html-t 后面的10是抓10秒的 trace日志
-b 40960 是buffer缓冲区大小
上面具体的参数含义可以参考:https://www.cnblogs.com/yuanqiangfei/p/18371847
4、打开systrace.html文件分析