Android——bootchart


bootchart:android原生自帶的開機性能查看機制。通過收集android開機過程中的各種log數據,終於能夠圖表的形式展現各個進程在開機過程中的性能。(博客不能斷…)

撰寫不易,轉載需注明出處:http://blog.csdn.net/jscese/article/details/45933943本文來自 【jscese】的博客!

編譯bootchart

bootchart 源代碼位於:\system\core\init\bootchart.c 屬於init
查看相應Android.mk,當中有這么一段:

ifeq ($(strip $(INIT_BOOTCHART)),true)
LOCAL_SRC_FILES += bootchart.c
LOCAL_CFLAGS    += -DBOOTCHART=1
endif

非常明顯的變量控制編譯了。假設想要把bootchart編譯進init,要么就export 這個變量為true,要么就定義賦值。


還有個相應的bootchart.h 頭文件。里面有宏控制,想要用bootchart。怎么改就不多說了~

原生的啟動是放在init.c的main里面:

#if BOOTCHART
queue_builtin_action(bootchart_init_action, "bootchart_init");
#endif

能夠看到首先跑的應該是bootchart里面的 bootchart_init 這個函數
能夠略微看下bootchart的源代碼,當中有這么一句:

 proc_read( LOG_STARTFILE, buff, sizeof(buff) );
 ...
 int  fd = open( LOG_ACCT, O_WRONLY|O_CREAT|O_TRUNC,0644);
 //這些文件都是/data分區以下的

第一個proc_read讀取的算是一個配置時間: /data/bootchart-start,來決定bootchart從開啟到結束的時間。
第二個自然就是抓取的log信息 存放的位置了:/data/bootchart
那么必定是須要data分區先掛載好,所以啟動bootchart的地方得衡量!


使用bootchart

正常編譯進系統之后。就須要手動的去設置一下上面說到的配置了:

echo 50 > /data/bootchart-start
//寫個50s進去

重新啟動就可以,執行正常的話,可在/data/bootchart以下看到五個文件:

root@86v:/ # ll /data/bootchart                                                
-rw-rw-rw- root root 517 2015-05-23 15:17 header -rw-r--r-- root root 0 2015-05-23 15:17 kernel_pacct -rwxr-xr-x root root 196608 2015-05-23 15:17 proc_diskstats.log -rwxr-xr-x root root 3735552 2015-05-23 15:17 proc_ps.log -rwxr-xr-x root root 131072 2015-05-23 15:17 proc_stat.log

打包為bootchart.tgz:

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

adb pull 或者直接copy出來,放到pc上。

ubuntu的話能夠用apt-get 去安裝bootchart,能夠用bootchart bootchart.tgz 去解析為圖表。有可能會有錯誤,網上有人給出來了改動相應python腳本的方法。不難。
可惜我已經不在ubuntu下了,諸多不便 - -

Windows下的話,得去找個bootchart相應的jar包,能夠從ubuntu上bootchart安裝文件夾下拷出來

java -jar bootchart.jar bootchart.tgz

沒有錯誤的話能夠得到一張bootchart.png圖片,上一張圖:
bootchart

通俗的理解就是 藍色為cpu占用 ,粉色為io等待,也就是文件操作的耗時,橫軸為起機時間。以進程為單位描寫敘述。

就到這里吧~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM