systrace的简单介绍
systrace是 Android 4.1 之后,引入的分析设备性能的主要工具,是Linux内核中的主要跟踪机制。
Systrace 允许你收集和检查设备上运行的所有进程的计时信息。 它包括 Android kernel 的一些数据(例如:CPU调度信息,APP Thread),并且会生成HTML报告,方便用户查看分析 trace 内容。
以下内容都是以AndroidStudio开发工具所讲
使用的快捷键
常用快捷键有
w---放大 a---左移 s---缩小 d--右移 m---框选具体的一帧 ctrl+f 查找具体的内容
数字键:
其他快捷键,大家慢慢研究!
抓取systrace的方式
windows版本
DDMS(Dalvik Debug Monitor Service),是Android开发环境中的Dalvik虚拟机调试监控服务。现如今的版本升级之后,DDMS在AndroidStudio的控制面板中已经找不到了,被换名为monitor了,位置在 C:\ xxxx\AppData\Local\Android\Sdk\tools\monitor.bat,可以使用CMD小窗口直接输入monitor即可打开(保证Sdk安装位置是按照AndroidStudio的默认安装路径)。打开就长这样:
Linux版本
(1)命令抓取:在Android/Sdk/platform-tools/systrace 目录下,进入终端,执行:$ python systrace.py [options] [categories],一段时间后会自动生成一个 trace.xml 文件,在浏览器中输入chrome://tracing打开,拖动trace到浏览器进行查看。里面的options由自己选择,比如$ python systrace.py -t 10 -b 20480 -o trace.html
-t 时间 单位s; -b 缓存大小; -o 文件位置
(2)同Windows:找到Sdk下的monitor即可
systrace的入门基本知识
查看线程状态
systrace 会用不同的颜色来标识不同的线程状态, 在每个方法上面都会有对应的线程状态来标识目前线程所处的状态.
线程状态主要有下面几个
绿色 : 运行中 即Running time
点击绿色状态可以看到在具体哪个CPU上运行,以及运行时间等。
切入点:当Running time 时间过长,这时候可以和对比机比较CPU frequency是否一致,分析是否在同一个CPU 上,还是一个在大核一个在小核呢?
蓝色 : 可运行 即Runnable time
这种状态表示CPU 比较忙,等待调度
白色 : 休眠中 即Sleeping time
处于睡眠状态,分析时主要看下一个状态(即Runnable)被谁唤醒了,查看wake up from tid = xxx
橘色 : 不可中断的睡眠态 IO 即Uninterreptible-Block I/O
线程在I / O上被阻塞或等待磁盘操作完成,表示正在读取数据但是还没有把数据全部读取出来,一般会伴随着低内存等,具体问题还需要分情况
(这张图来自www.androidperformance.com)
紫色 : 不可中断的睡眠态 即Uniterreptible Sleeping
简单的介绍就到这里~~~