RK2908开机时间分析及优化
生活随笔
收集整理的這篇文章主要介紹了
RK2908开机时间分析及优化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1?? ?RK2908開機時間分析和優化文檔背景概述
???? 目前由于RK2908開機時間比較長(平均35s)可能對一體機項目的整體體驗造成影響,所以需要對RK2908開機整個流程進行分析,是否有優化的地方。
2?? ?分析RK2908開機所用的整體時間
2.1?? ?統計的方法
采用bootchart 生成bootchart.png
2.1.1?? ?Bootchart簡介
Bootchart 是一個能對 GNU/Linux boot 過程進行性能分析并把結果直觀化的工具。它在 boot 過程中搜集資源利用情況及進程信息然后以 PNG,SVG 或 EPS 格式來顯示結果。 BootChart 包含數據收集工具和圖像產生工具,數據收集工具在原始的 BootChart 中是獨立的 shell 程序,但在 Android 中,數據收集工具被集成到了 init 程序中。(Bootchart在android系統中的使用見文檔:bootchart-android)
?
2.1.2?? ?Bootchart結果
?
2.1.3?? ?分析結果
?
圖中4個區域就是整個開機耗時的地方
1:?? ?kernel init
?? ?大概7s左右
2:zygote class preloading
?? ?從7-19s,大概12s
3:systemserver start
?? ?從19-32s,大概13s
4:packagemanager package scanning
?? ?從32-51s,大概19s
從中可以看出大部分時間都在preload classes和start systemservers及scan packages
3?? ?優化方案
從實際的測試數據分析,首先可以優化zygote的裝載類。
zygote的裝載類preloaded-classes在下載源碼的時候已經確定,在RK2908的SDK中,這個文件共加載了2000多個類,進行分類,主要加載的類有:google服務的類及android framework的類及java類。想做極速啟動,可以在preloaded-classes文件中,把不預裝載的類去掉只剩下java的類以加快啟動速度,但是會影響HOME的響應,apk的響應。
優化/system/app/下的apk包,可以減少一些不需要的apk,從而加快scan packages的時間。Apk的刪減建議可以看文檔:systemapp中的APK一覽.xlsx
?
優化系統預裝語言支持。可以裁減系統預裝語言只保留中文(簡體),英語。
優化systemserver,server的優化建議可以看文檔:SystemServer中啟動服務列表.xlsx
?
可以去掉android開機動畫,bootanimation。去掉bootanimation方法可以參考文檔:
4?? ?優化后RK2908開機所用的整體時間
1?? ?2?? ?3?? ?4?? ?5?? ?6?? ?7?? ?8?? ?9?? ?10
24?? ?23?? ?23?? ?23?? ?22?? ?21?? ?23?? ?23?? ?23?? ?23
5?? ?優化結論
???? 通過對preloaded-classes,scan packages,systemserver,bootanimation的分析和優化,初步可以得出此次優化效果還是比較明顯的,但優化后對整個系統的影響需要做進一步的評估。
???? 目前由于RK2908開機時間比較長(平均35s)可能對一體機項目的整體體驗造成影響,所以需要對RK2908開機整個流程進行分析,是否有優化的地方。
2?? ?分析RK2908開機所用的整體時間
2.1?? ?統計的方法
采用bootchart 生成bootchart.png
2.1.1?? ?Bootchart簡介
Bootchart 是一個能對 GNU/Linux boot 過程進行性能分析并把結果直觀化的工具。它在 boot 過程中搜集資源利用情況及進程信息然后以 PNG,SVG 或 EPS 格式來顯示結果。 BootChart 包含數據收集工具和圖像產生工具,數據收集工具在原始的 BootChart 中是獨立的 shell 程序,但在 Android 中,數據收集工具被集成到了 init 程序中。(Bootchart在android系統中的使用見文檔:bootchart-android)
?
2.1.2?? ?Bootchart結果
?
2.1.3?? ?分析結果
?
圖中4個區域就是整個開機耗時的地方
1:?? ?kernel init
?? ?大概7s左右
2:zygote class preloading
?? ?從7-19s,大概12s
3:systemserver start
?? ?從19-32s,大概13s
4:packagemanager package scanning
?? ?從32-51s,大概19s
從中可以看出大部分時間都在preload classes和start systemservers及scan packages
3?? ?優化方案
從實際的測試數據分析,首先可以優化zygote的裝載類。
zygote的裝載類preloaded-classes在下載源碼的時候已經確定,在RK2908的SDK中,這個文件共加載了2000多個類,進行分類,主要加載的類有:google服務的類及android framework的類及java類。想做極速啟動,可以在preloaded-classes文件中,把不預裝載的類去掉只剩下java的類以加快啟動速度,但是會影響HOME的響應,apk的響應。
優化/system/app/下的apk包,可以減少一些不需要的apk,從而加快scan packages的時間。Apk的刪減建議可以看文檔:systemapp中的APK一覽.xlsx
?
優化系統預裝語言支持。可以裁減系統預裝語言只保留中文(簡體),英語。
優化systemserver,server的優化建議可以看文檔:SystemServer中啟動服務列表.xlsx
?
可以去掉android開機動畫,bootanimation。去掉bootanimation方法可以參考文檔:
4?? ?優化后RK2908開機所用的整體時間
1?? ?2?? ?3?? ?4?? ?5?? ?6?? ?7?? ?8?? ?9?? ?10
24?? ?23?? ?23?? ?23?? ?22?? ?21?? ?23?? ?23?? ?23?? ?23
5?? ?優化結論
???? 通過對preloaded-classes,scan packages,systemserver,bootanimation的分析和優化,初步可以得出此次優化效果還是比較明顯的,但優化后對整個系統的影響需要做進一步的評估。
總結
以上是生活随笔為你收集整理的RK2908开机时间分析及优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android ramdisk.img
- 下一篇: Android中状态栏的隐藏