效能分析工具 — bootchart 工具使用(android 8.1)
bootchart 是一個用於 linux 啟動過程效能分析的開源工具軟體,在系統啟動過程中自動收集 CPU 佔用率、磁碟吞吐率、程序等資訊,並以圖形方式顯示分析結果,可用作指導優化系統啟動過程。
bootchart 讓使用者可以很直觀的檢視系統啟動的過程和各個過程耗費的時間,以便讓使用者能夠分析啟動過程,從而進行優化以提高啟動時間。
它由 bootchartd 服務和 bootchart-render 兩部分組成,後者主要負責生成啟動流程的分析結果圖。
2. bootchart 在 android8.1 中的應用
Android 系統原始碼中有 bootchart 的實現,路徑在 system/core/init/bootchart.cpp 中, bootchart 通過內嵌在 init 程序中實現,在後臺執行測量。不過 bootchart 的測量時段是 init 程序啟動之後,不包含 uboot 和 kernel 的啟動時間。
3. bootchart 在 android 平臺的使用步驟
在 android 原始碼路徑 system/core/init/README.md 中包含了對 bootchart 的使用說明。
3.1. 編譯 bootchart
在 Android 5.1 之前 bootchart 是沒有編譯進系統的,需要使用下面的巨集手動開啟編譯,在 Android 6.0 以上系統預設已經編譯了 bootchart,可以 adb shell 命令進入檔案系統,可以看到 data 下面已經有 bootchart 的目錄了。
rk3288:/data/bootchart # ls
- 1
- 2
3.2 開啟 bootchart 收集開機資料
1. adb shell 'touch /data/bootchart/enabled'
首先使能 bootchart,bootchart 操作的前提是存在 enable 標記,所以
在你不需要收集資料的時候別忘了刪除這個標記。
2. - sudo apt-get install pybootchartgui
- $ANDROID_BUILD_TOP/system/core/init/grab-bootchart.sh
grab-bootchart.sh 指令碼是 Google 封裝的一系列操作的合集跟使用下面手動操作的結果是一樣的。
* 手動操作
1. (可選) echo $TIME_OUT > /data/bootchart/start
新增 bootchart timeout 時間
2. reboot 重啟
3. 可以看到 bootchart 生成的資料檔案和 log 都被儲存在 /data/bootchart 路徑下
4. tar -zcf boochart.tgz *
5. 使用 adb pull 命令將檔案拷貝出來
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
3.3 在 Linux PC 機上生成 bootchart 圖表
PC 機安裝 bootchart 工具
sudo apt-get install bootchart
sudo apt-get install pybootchartgui
- 1
- 2
生成 bootchar 圖表
拷貝 bootchart.tgz 到 PC 中,並執行下面的命令生成圖表
bootchart bootchart.tgz
- 1
4. bootchart 圖形分析小技巧
整個圖表以時間線為橫軸,圖示上方為 CPU 和 磁碟的利用情況,下方是各程序的執行狀態條,顯示各個程序的開始時間與結束時間以及對 CPU、I/O 的利用情況,我們關心的各個程序的執行時間以及 CPU 的使用情況,進而優化系統。
- 可以通過 Laucher 的啟動時間判斷開機完成完成時間
- 通過程序的時間長短判斷是否存在異常,如圖表上的 第一個 Zygote 程序啟動時間很短,顯示存在異常,後又成功心啟動了一遍。
- 待補充
相關推薦
效能分析工具 — bootchart 工具使用(android 8.1)
bootchart 是一個用於 linux 啟動過程效能分析的開源工具軟體,在系統啟動過程中自動收集 CPU 佔用率、磁碟吞吐率、程序等資訊,並以圖形方式顯示分析結果,可用作指導優化系統啟動過程。 bootchart 讓使用者可以很直觀的檢視系統啟動的過程和各個
Android 8.1 之省電模式分析
1. 功能概述 Battery saver是Google在Android L上新增的選項,這個功能是在Setting -> Battery (–> more (androidO以前的路徑)) –> Battery saver,這個功能主要是為
Android 8.1 Doze模式分析
概述 Doze模式可以簡單概括為: 若判斷使用者在連續的一段時間內沒有使用手機,就延緩終端中APP後臺的CPU和網路活動,以達到減少電量消耗的目的。 Doze模式(低電耗模式),是Andoriod6.0增加的一項系統服務,主要目的是為了優化電池效能,增加電池續航時間,
Android 8.1.0 模擬器
模擬器 1.0 roi andro logs ges blog .com images Android 8.1.0 模擬器
Android 8.1 關機
之前傳送Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");會報 android.content.ActivityNotFoundException: No Activity found to
Android 8.1 新增屬性SystemProperties.set可執行許可權
在Android 8.1由於selinux許可權的限制。預設SystemProperties.set執行報avc denied,即使給 app android:sharedUserId="android.uid.system"許可權也不行,如果想執行必須修改一些檔案。 device/
Android 8.1 非系統程序設定系統域屬性問題
1. 程序間通過設定屬性進行互動 Android 系統開發中經常需要通過屬性在各個程序間傳遞資訊,通過一個程序 set_property,另一個程序 get_property 達到程序間通訊的需求。 屬性獲取沒有限制,但是如果需要程序可以進行設定屬性操作,則需要做一些處理。因為在
Android 8.1 原始碼_核心篇 -- 深入研究 PackageManagerService 系列(1)
開篇 前言 如果你真正的深入分析過 PackageManagerService,你會發現 PackageManagerService 的原始碼真的很大,而且邏輯、結構都甚為複雜。對 PackageManagerService 系列的原始碼分析是基於 Android
Android 8.1 獲取wifi mac地址方法
安卓8.1更新了獲取WIFI地址的方法,使用之前的方法獲取不到地址 private String getWifiMacAddress() { String str = ""; String macSerial = "";
Mac 10.14 編譯Android 8.1原始碼及刷入nexus 6p
環境準備 官網 描述得已經相當清楚了 ,這裡稍微總結一下: 建立區分大小寫的磁碟映像 mac系統預設是不區分大小寫的,所以我們需要建立一個區分大小寫的檔案系統 hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 6
android 8.1 vts環境和測試
VTS 測試,首先需要搭建測試環境,我們需要以下這些元件: 64-bit Ubuntu Linux Java 8Python 2.7 ADB 1.0.39具體的搭建步驟是: 安裝Java8(JDK8)sudo add-apt-repository ppa:webupd8te
Android 8.1 App Standby
App Standby黑白名單配置流程 如圖所示,可選擇優化和不優化 程式碼路徑:packages\apps\Settings\src\com\android\settings\fuelgauge\HightPowerDetail @Override public
移植rtl8188 wifi模組到android 8.1(android o)
一、驅動部分 1、rtl8188eu/rtl8188fu驅動,修改對應目錄下的makefile,適應平臺 2、檢測模組電壓、時鐘是否正確。硬體正常的話,可以用lsusb檢視到模組的廠商ID和裝置ID。 3、載入驅動後, ifconfig -a可以看到網口,用iw命令測試wi
Android 8.1移植:針對某個APK做到wifi和gprs分別做到允許和禁止兩種策略
在MTK平臺JB5開始後預設有該功能,昨天在檢視8.1的程式碼時發現沒有該功能,現在我把移植流程記錄下來,親測驗證ok。 1.frameworks frameworks/base/core/java/android/os/INetworkManagement
android 8.1 MTK 預設儲存(插入sdcard時預設sdcard)
1.修改獲取預設儲存路徑的方法 vendor/mediatek/proprietary/frameworks/base/core/java/com/mediatek/storage/StorageManagerEx.java method: getDefau
Android 8.1上狀態列新增截圖功能
1.需求 客戶要求在狀態列新增截圖功能。。 實現效果如下: 實現步驟 步驟1 在配置檔案alps\vendor\mediatek\proprietary\packages\apps\SystemUI\res\values\config.xml新增\screens
Android 8.1 Handler 原始碼解析
原始碼解析,如需轉載,請註明作者:Yuloran (t.cn/EGU6c76) 一. 前言 基於Android 8.1(API27) 原始碼,分析 Handler 的工作流程。 在 Android 系統中,Zygote 程序是首個 java 程序,同時也是所有 java 程序的父程序。上層應用
Android 8.1 新增選單項
由於工作的原因,許多時間我們需要定製自己的Settings,需要對Settings中的選單項進行增加和刪除。 1.增加選單項 第一,首先在AndroidManifest.xml中新增activity 其具體屬性的解析如下: 第二,在包com.and
Android 8.1適配規範及常見問題處理方式,讓你一口吃上“奧利奧”
熱文導讀 | 點選標題閱讀來源:OPPO開發者平臺(ID:OPPOMOBILEOPEN)據 An
Android 16.04 編譯 Android 8.1 系統準備
1. 安裝 jdk sudo apt-get install openjdk-8-jdk 2. 安裝必要工具(用於編譯第三方庫,Android原始碼可能不需要但是還是安裝為妙); sudo apt-get install vim git zip build-essenti