zoukankan      html  css  js  c++  java
  • 性能分析工具 — bootchart 工具使用(android 8.1)【转】

    转自:https://blog.csdn.net/qq_19923217/article/details/81043736

    1. bootchart 简介

    bootchart 是一个用于 linux 启动过程性能分析的开源工具软件,在系统启动过程中自动收集 CPU 占用率、磁盘吞吐率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程。

    bootchart 让用户可以很直观的查看系统启动的过程和各个过程耗费的时间,以便让用户能够分析启动过程,从而进行优化以提高启动时间。

    它由 bootchartd 服务和 bootchart-render 两部分组成,后者主要负责生成启动流程的分析结果图。

    bootchart官网

    2. bootchart 在 android8.1 中的应用

    Android 系统源码中有 bootchart 的实现,路径在 system/core/init/bootchart.cpp 中, bootchart 通过内嵌在 init 进程中实现,在后台执行测量。不过 bootchart 的测量时段是 init 进程启动之后,不包含 uboot 和 kernel 的启动时间。

    3. bootchart 在 android 平台的使用步骤

    在 android 源码路径 system/core/init/README.md 中包含了对 bootchart 的使用说明。

    3.1. 编译 bootchart

    在 Android 5.1 之前 bootchart 是没有编译进系统的,需要使用下面的宏手动打开编译,在 Android 6.0 以上系统默认已经编译了 bootchart,可以 adb shell 命令进入文件系统,可以看到 data 下面已经有 bootchart 的目录了。

    rk3288:/data/bootchart # ls
    
    
    • 1
    • 2
    3.2 打开 bootchart 收集开机数据
    1. adb shell 'touch /data/bootchart/enabled'
       首先使能 bootchart,bootchart 操作的前提是存在 enable 标记,所以
       在你不需要收集数据的时候别忘了删除这个标记。
    
    2. - sudo apt-get install pybootchartgui
       - $ANDROID_BUILD_TOP/system/core/init/grab-bootchart.sh
       grab-bootchart.sh 脚本是 Google 封装的一系列操作的合集跟使用下面手动操作的结果是一样的。
       
       * 手动操作
       1. (可选) echo $TIME_OUT > /data/bootchart/start
       添加 bootchart timeout 时间
       2. reboot 重启
       3. 可以看到 bootchart 生成的数据文件和 log 都被保存在 /data/bootchart 路径下
       4. tar -zcf boochart.tgz *
       5. 使用 adb pull 命令将文件拷贝出来
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    3.3 在 Linux PC 机上生成 bootchart 图表
    PC 机安装 bootchart 工具
    sudo apt-get install bootchart
    sudo apt-get install pybootchartgui 
    
    • 1
    • 2
    生成 bootchar 图表

    拷贝 bootchart.tgz 到 PC 中,并执行下面的命令生成图表

    bootchart bootchart.tgz
    
    • 1

    4. bootchart 图形分析小技巧

    image

    整个图表以时间线为横轴,图标上方为 CPU 和 磁盘的利用情况,下方是各进程的运行状态条,显示各个进程的开始时间与结束时间以及对 CPU、I/O 的利用情况,我们关心的各个进程的运行时间以及 CPU 的使用情况,进而优化系统。

    1. 可以通过 Laucher 的启动时间判断开机完成完成时间
    2. 通过进程的时间长短判断是否存在异常,如图表上的 第一个 Zygote 进程启动时间很短,显示存在异常,后又成功心启动了一遍。
    3. 待补充
  • 相关阅读:
    【转】医院信息系统基本功能规范---门急诊划价收费分系统功能规范
    elementUI的table表头与内容错位的解决方案
    小程序按钮设置宽度无效的解决方案
    小程序scroll-view的bindscroll在真机上不触发的解决方案?
    小程序怎么设置input框和键盘的距离
    小程序动态获取元素高度报错VM14689:1 thirdScriptError Cannot read property 'height' of null;at SelectorQuery callback function TypeError: Cannot read property 'height' of null
    mpvue使用px与设计稿的转化
    SpringBoot中前后端数据交互
    Java并发-BlockingQueue
    Java并发-Fork/Join框架
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/13752553.html
Copyright © 2011-2022 走看看