Android性能优化之Systrace分析基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android性能优化之Systrace分析基础适⽤平台
Android Version: 6.0及以上
Platform:通⽤
1. 分析前准备
最好是在userdebug或者开启root权限的user版本设备上来进⾏systrace的抓取。
在实际的操作⽤,我⼀直使⽤了普通的user版本,需要的信息也都抓到了。
2. ubuntu环境下systrace抓取的⽅法
这⾥介绍两种⽐较通⽤的使⽤⽅法,命令⾏式的和图形界⾯式的。
当然还有其他封装的⼯具,⽐如MTK出的⼿机端的apk以及GAT⼯具中的插件等,这⾥就不介绍,我们只需掌握最原始和最基础的,万变不离其宗。
这⾥使⽤的Android SDK⼯具的版本需要升级的6.0也就是level 24。
2.1 命令⾏式
使⽤的为Android SDK⽬录下的systrace.py脚本来做
android-sdk-linux/platform-tools/systrace/systrace.py -b xxx -t xxx -o trace.html <tag>
介绍下参数的使⽤: -b是定义buffer size,单位为KB,-t定义的是抓取的时间,⼀般抓5秒的systrace就将buffer size设成20480差不多,如果buffer size过⼩有可能导致信息丢失。
-o后⾯为⽬标⽂件的名称,最重要和困难的就是tag,那么有⼏种tag呢?可以使⽤命令
systrace.py -l
来查看,⽽tag的使⽤场景在后⾯会继续介绍。
2.2 图形界⾯式
google还提供了图形界⾯式的抓取⼯具,先启动位于android-sdk-linux/tools⽬录下的monitor⼯具,如果sdk的环境变量都配置正确可以直接在命令⾏中执⾏:
monitor
如果有安装android studio,也可以在studio启动monitor,连接⼿机,会启动如下⼯具界⾯(部分相关截图) 然后点击红框部分的按钮会启动如下systrace抓取前的配置界⾯
图中的tag配置为LG项⽬中测试Touch Performance时抓取的配置,适⽤于抓取界⾯启动相关信息的测试项。
配置完成之后点击ok,然后就在⼿机中做测试操作,预设时间结束之后⾃动保存systrace信息。
2.3 TAG使⽤
不论是命令式或者是图形界⾯式的抓取⽅法,都需要设置抓取的TAG信息。
如果是和MTK合作,配合他们抓取systrace的情况,那么可以根据MTK的需求来做,但是要脱离MTK的阴影就必须能⾃⾏对各个TAG的含义有⼀定的了解来做配置,这⾥介绍各个TAG的使⽤场景,⽽真实情况下通常是多种TAG的组合,这就需要经验的积累,例如上⽂中提到过的Touch Performance 测试的适⽤场景。
命令模式下,TAG的查看可以通过
systrace.py -list
来取得⽽图形界⾯下就⽅便很多,直接给你列出来做勾选就可以,各个TAG的含义如下:
–这三个是cpu信息,必须带上
freq sched idle
–测试列表滑动,桌⾯滑动等流畅性问题
gfx input view
–若在上⾯基础上还需要分析HWUI
gfx input view hwui
–测试app启动或者进⼊某个界⾯速度
gfx input view am wm res
–怀疑有GC或者IO导致卡顿
gfx input view dalvik disk
–怀疑有power相关,量灭屏慢等
gfx inpu view res am wm power
3. systrace的打开⽅式
systrace是google提供的⼀种log形式,其打开也⽐较特殊,需要⽤chrome浏览器来查看(google 的⼯具⽣态圈也是越来越强⼤)。
前⾯提到了在Android 6.0设备上,抓取时需要将SDK版本也升级到最新,那么查看时我们也需要最新版本的Chrome浏览器,否则可能会出现打不开,信息丢失等情况。
我这⾥使⽤了ubuntu下的Version 53.0.2785.143,配合升级到android-24的SDK版本。
⼯具准备齐全之后来介绍下正确的打开⽅式,在android 6.0之前的版本中,⾮常普遍的⽅式是右击抓到的systrace⽂件(例如trace.html),然后选择⽤chrome打开,这样就万事⼤吉了。
然后在Android 6.0以后我不建议这么做,因为继续沿⽤这种⽅式的话我⾃⼰是遭遇过打不开和信息丢失的情况,⽽正确的⽅式应该是这样的:
1. 启动Chrome
2. 在地址栏输⼊chrome://tracing/
3. 点击load,然后选择需要加载的systrace⽂件就可以了
效果如下图:全是密密⿇⿇各种颜⾊的线条,需要有极强的耐⼼从这⼀堆东西⾥找出线索来,基本的键盘操作⽅式如下: A和D–左右移动 W和S–缩放⿏标操作为界⾯上悬浮
的⼯具栏从上⾄下以此为选择、移动、缩放和测量(时间间隔)的⼯具,需要先选中,后使⽤。
4. 如何分析
已经介绍了抓取和打开systrace以及⼏个基本的操作,那么如何使⽤systrace来分析问题呢?这是个⾮常⼤且困难的课题,也是我本⼈学习系统异常、性能等问题分析以来遇到的最艰涩的⼀种分析⼿段。
我也就我⾄今接触和掌握⽐较熟练的两个例⼦来做部分的介绍,可以参考:
—-Android性能优化之Systrace分析app启动分析
—-Android性能优化之Systrace分析drag响应时间
Previous
Android性能优化之Systrace分析app启动分析
Next
Android性能优化之Systrace分析drag响应时间。