Android开机性能分析工具 Bootchart

bootchart是android原生自带的性能分析工具,可以收集android开机过程中的log。再利用jar包能够将开机时各个进程呈现在图表中。可以比较直观的看到开机时哪些比较耗时。

一、启用Bootchart

android中的bootchart源码位于system/core/init目录下,bootchart.cpp中有个do_bootchart_start()函数

static int do_bootchart_start() {
  // We don't care about the content, but we do care that /data/bootchart/enabled actually exists.
  std::string start;
  if (!android::base::ReadFileToString("/data/bootchart/enabled", &start)) {
    LOG(VERBOSE) << "Not bootcharting";
    return 0;
  }

  g_bootcharting_thread = new std::thread(bootchart_thread_main);
  return 0;
}

代码中时通过判断是否有/data/bootchart/enabled文件来启动bootchart的,所以创建一个这个文件即可启动

二、设置收集数据时间

这个在源码中没有找到相应的说明,按照网上说的6.0之后做法,试了下没看出效果

    1. 创建/data/bootchart/start文件存储bootchart采样时间(s)
  • 2 .adb shell ‘echo 120 > /data/bootchart/start’

三、生成图表

启用bootchart并且设置好时间后,重启机器,会在/data/bootchart下生成log文件,从源码中可以看到当前会生成哪些日志文件。除了这个log文件之外还会生成一个header文件,也是必须的。

static void bootchart_thread_main() {
  LOG(INFO) << "Bootcharting started";

  // Open log files.
  auto stat_log = fopen_unique("/data/bootchart/proc_stat.log", "we");
  if (!stat_log) return;
  auto proc_log = fopen_unique("/data/bootchart/proc_ps.log", "we");
  if (!proc_log) return;
  auto disk_log = fopen_unique("/data/bootchart/proc_diskstats.log", "we");
  if (!disk_log) return;
  
  ......

}

然后利用bootchart工具把这些日志转成png图片。

1.使用系统自带脚本生成png图片

执行 /system/core/init/grab-bootchart.sh 自动生成png图片
(没试过,这个手机要连接服务器电脑才行,看脚本猜测的)

2.使用bootchart.jar处理日志压缩文件

从官网下载bootchart源码,放到ubuntu目录下,执行

#  http://www.bootchart.org/download.html  bootchart官网地址
ant    

生成bootchart.jar
将手机 /data/bootchart/ 下文件 (header proc_diskstats.log proc_ps.log proc_stat.log) pull出来copy到服务器,执行下压缩命令生成bootchart.tgz

1 .busybox tar zcvf bootchart.tgz header proc_diskstats.log proc_ps.log proc_stat.log

使用jar转成png图

1. java -jar bootchart.jar bootchart/bootchart.tgz

《Android开机性能分析工具 Bootchart》

最后给大家分享一份非常系统和全面的Android进阶技术大纲及进阶资料,及面试题集

想学习更多Android知识,请加入Android技术开发企鹅交流 7520 16839

进群与大牛们一起讨论,还可获取Android高级架构资料、源码、笔记、视频

包括 高级UI、Gradle、RxJava、小程序、Hybrid、移动架构、React Native、性能优化等全面的Android高级实践技术讲解性能优化架构思维导图,和BATJ面试题及答案!

群里免费分享给有需要的朋友,希望能够帮助一些在这个行业发展迷茫的,或者想系统深入提升以及困于瓶颈的朋友,在网上博客论坛等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我在这免费分享一些架构资料及给大家。希望在这些资料中都有你需要的内容。

《Android开机性能分析工具 Bootchart》
《Android开机性能分析工具 Bootchart》

    原文作者:Android高级架构探索
    原文地址: https://www.jianshu.com/p/af5198fcec41
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞