systrace

作者: richy_ | 来源:发表于2018-01-25 14:47 被阅读284次

    一.介绍systrace

    一般来说,我们的机器以60帧/秒显示时(也就是16.6 millisecond),用户会感觉机器会流畅。如果出现显示时出现丢帧的情况,我们要知道系统在做什么。
    systrace是Android4.1版本之后推出的,对系统Performance分析的工具。
    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目录/sdk/platform-tools/systrace中,其内部将调用atrace程序)用来配置数据采集的方式(如采集数据的标签、输出文件名等)和收集ftrace统计数据并生成一个结果网页文件供用户查看。

    二.抓取systrace

    google systrace说明
    有三种方式抓取systrace:

    2.1 systrace.py工具

    cd android-sdk/platform-tools/systrace
    python systrace.py --app=sectionName --time=10 -o mynewtrace.html sched gfx view wm
    

    2.1.1 options

    其中options可取值:

    options 描述
    -o < FILE > 输出的目标文件
    -t N, –time=N 执行时间,默认5s
    -b N, –buf-size=N buffer大小(单位kB),用于限制trace总大小,默认无上限
    -k < KFUNCS >,–ktrace=< KFUNCS > 追踪kernel函数,用逗号分隔
    -a < APP_NAME >,–app=< APP_NAME > 追踪应用包名,用逗号分隔
    –from-file=< FROM_FILE > 从文件中创建互动的systrace
    -e < DEVICE_SERIAL >,–serial=< DEVICE_SERIAL > 指定设备
    -l, –list-categories 列举可用的tags , You can run systrace with the -l command to see a list of services available to your connected device.

    2.2 Device Monitor(DDMS)

    可以使用Android Studio集成开发工具,切换到DDMS,点击devices,点击Systrace按钮

    2.3 自定义systrace

    2.3.1 app层

    import android.os.Trace;
    Trace.beginSection(String sectionName)
    Trace.endSection()
    

    2.3.2 Java Framework

    import android.os.Trace;
    Trace.traceBegin(long traceTag, String methodName)
    Trace.traceEnd(long traceTag)
    

    抓取systrace分析。

    2.3.3 Native framework层

    #include <cutils/trace.h>
    ATRACE_CALL()
    

    抓取systrace分析。

    三. 分析systrace

    Google Chrome浏览器可以打开systrace,如果打不开,可以通过chrome://tracing/,然后load systrace。

    3.1 快捷操作

    3.1.1 导航操作

    导航操作 作用
    w 放大,[+shift]速度更快
    s 缩小,[+shift]速度更快
    a 左移,[+shift]速度更快
    d 右移,[+shift]速度更快

    3.1.2 快捷操作

    常用操作 作用
    f 放大当前选定区域
    m 标记当前选定区域
    v 高亮VSync
    g 切换是否显示60hz的网格线
    0 恢复trace到初始态,这里是数字0而非字母o
    一般操作 作用
    h 切换是否显示详情
    / 搜索关键字
    enter 显示搜索结果,可通过← →定位搜索结果
    ` 显示/隐藏脚本控制台
    ? 显示帮助功能

    对于脚本控制台,除了能当做记事本的功能,目前还不清楚有啥功能,或许还在开发中。

    3.1.3 模式切换

    • Select mode: 双击已选定区能将所有相同的块高亮选中;(对应数字1)
    • Pan mode: 拖动平移视图(对应数字2)
    • Zoom mode:通过上/下拖动鼠标来实现放大/缩小功能;(对应数字3)
    • Timing mode:拖动来创建或移除时间窗口线。(对应数字4)

    可通过按数字1~4,用于切换鼠标模式; 另外,按住alt键,再滚动鼠标滚轮能实现放大/缩小功能。

    3.2 样例分析

    最好不过google官方文档
    https://source.android.com/devices/tech/debug/systrace

    四. 不错的参考

    刘望舒的Android绘制优化
    Android App优化之性能分析工具
    Google Android UI 性能优化

    相关文章

      网友评论

        本文标题:systrace

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