主要针对Linux系统的Bootchart文件进行分析,关于怎么采集Bootchart可以查看官方文档。
文件总览
.
├── enabled
├── header
├── proc_diskstats.log
├── proc_ps.log
└── proc_stat.log
Android手机中生成的Bootchart文件如上。
enabled文件
采集Bootchart的标志文件,不关注内容。参照Android12的源码部分。
static Result<void> 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 {
};
}
g_bootcharting_thread = new std::thread(bootchart_thread_main);
return {
};
}
只要/data/bootchart/enabled
文件存在,就开启bootchart_thread_main
线程。
head文件
head文件存储了版本、时间、system.uname、system.release、CPU类型、kernel启动参数等。
fprintf(&*fp, "version = Android init 0.8\n");
fprintf(&*fp, "title = Boot chart for Android (%s)\n", date);
fprintf(&*fp, "system.uname = %s %s %s %s\n", uts.sysname, uts.release, uts.version, uts.machine);