1. 程式人生 > >效能分析工具 — bootchart 工具使用(android 8.1)

效能分析工具 — 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 圖形分析小技巧

image

整個圖表以時間線為橫軸,圖示上方為 CPU 和 磁碟的利用情況,下方是各程序的執行狀態條,顯示各個程序的開始時間與結束時間以及對 CPU、I/O 的利用情況,我們關心的各個程序的執行時間以及 CPU 的使用情況,進而優化系統。

  1. 可以通過 Laucher 的啟動時間判斷開機完成完成時間
  2. 通過程序的時間長短判斷是否存在異常,如圖表上的 第一個 Zygote 程序啟動時間很短,顯示存在異常,後又成功心啟動了一遍。
  3. 待補充

相關推薦

效能分析工具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