使用Systrace分析安卓性能

作者: 小怪兽大作战 | 来源:发表于2019-05-27 21:22 被阅读6次

    一、概述

    Systrace是安卓4.1中新增的数据采样和分析工具。谷歌通过在源码的关键函数中这是trace(也就是标记),然后通过这些标记就可以分析出安卓系统代码的运行情况。
    Systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况。
    Systrace经常被用来分析安卓系统和app的性能。

    二、使用方法

    2.1 使用Android SDK中Android Device Monitor

    在Android SDK的安装目录 Android\Sdk\tools中打开monitor,弹出window后点击右上角的DDMS,然后选择手机,点击按钮开始抓取,如下图所示。


    然后会弹出一个对话框,选择要抓取的信息,要抓取的时间,缓存大小。如下图所示。


    image.png

    最后点击OK开始抓取trace。这时我们就可以在手机上复现出现问题的情况,比如APP冷启动卡顿,滑动List丢帧等问题。

    2.2 使用python脚本抓trace

    这需要安装python环境,然后使用python命令抓取trace。这个我就不详细说了。

    三、分析trace

    3.1查看生成的网页

    抓取完成后会生成一个html网页,这个网页必须用谷歌浏览器打开。打开以后如下图所示。


    image.png

    在生成的网页中我们可以看到很多信息,比如CPU在某个时间片内执行了哪个函数,某个进程的每个线程的执行情况, 每个函数的耗时,线程状态的切换等。

    3.2快捷键的使用

    我们可以使用一些快捷键来帮助我们分析。
    A:左移
    D:右移
    W:放大
    S: 缩小
    M:选定时间区间

    3.3 案例分析

    下面我们来分析一个应用的冷启动。
    工具的使用方法上面已经说的比较清除了:先打开DDMS,然后点击选择抓取的信息,开始抓取。操作手机,最终完成抓取。
    我们知道,启动一个应用的流程:Lancher与AMS通信,AMS检查是否存在对应进程;如果对应进程还没启动,通过socket与Zygote通信,Zygote孵化出来新进程;新进程中ActivityThread的main方法执行,加载资源,启动looper等,最后渲染出帧,完成应用的启动。
    那么我们从抓取的trace中分析流程是不是这样的。

    3.3.1 桌面应用请求打开应用

    小米手机中桌面APP的名字是com.miui.home。点击启动应用icon,桌面应用就会与AMS通信,请求打开新的应用。


    3.3.2 AMS

    AMS检查目标进程还没有启动,与Zogote通信,请求Zygote孵化新进程。


    image.png
    3.3.3 新进程

    新进程启动,初始化,加载资源,渲染帧。


    image.png
    3.3.4 应用启动时间
    image.png

    从上图我们可以看出从新进程启动到渲染出第一个有效帧,共花费了730ms,低于安卓绿色联盟规定的应用冷启动1m的规定。

    四、总结

    不论是系统性能优化,还是app性能优化,systrace都是一个很有用的工具。看懂systrace,需要了解安卓系统源码,操作系统,多线程等知识,对于我们的开发有很大的帮助。

    相关文章

      网友评论

        本文标题:使用Systrace分析安卓性能

        本文链接:https://www.haomeiwen.com/subject/ozuktctx.html