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

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

使用jar转成png图

java -jar bootchart.jar bootchart/bootchart.tgz

bootchart.png

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值