一、systrace簡介
Systrace 是 Android4.1 中新增的效能資料取樣和分析工具。它可幫助開發者收集 Android 關鍵子系統(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分關鍵模組、服務,View系統等)的執行資訊,從而幫助開發者更直觀的分析系統瓶頸,改進效能。
Systrace 的功能包括跟蹤系統的 I/O 操作、核心工作佇列、CPU 負載以及 Android 各個子系統的執行狀況等。在 Android 平臺中,它主要由3部分組成:
- 核心部分:Systrace 利用了 Linux Kernel 中的 ftrace 功能。所以,如果要使用 Systrace 的話,必須開啟 kernel 中和 ftrace 相關的模組。
- 資料採集部分:Android 定義了一個 Trace 類。應用程式可利用該類把統計資訊輸出給ftrace。同時,Android 還有一個 atrace 程式,它可以從 ftrace 中讀取統計資訊然後交給資料分析工具來處理。
- 資料分析工具:Android 提供一個 systrace.py( python 指令碼檔案,位於 Android SDK目錄/platform-tools/systrace 中,其內部將呼叫 atrace 程式)用來配置資料採集的方式(如採集資料的標籤、輸出檔名等)和收集 ftrace 統計資料並生成一個結果網頁檔案供使用者檢視。 從本質上說,Systrace 是對 Linux Kernel中 ftrace 的封裝。應用程序需要利用 Android 提供的 Trace 類來使用 Systrace.
二、systrace的使用
1、配置python環境
安裝python,必須使用python 2.7的版本
使用我提供的安裝包或者根據以下方法去官網下載安裝包
官網下載方法:
- 可以去python官網下載安裝,我這裡安裝的是2.7.16版本
- 安裝windows擴充套件檔案
開啟https://pypi.org/project/pypiwin32/219/#files,下載以下兩個檔案並安裝:
2、安裝完成後,python -V檢視python版本是否正確,如果不正確,排查下環境變數配置是否正確。
3、systrace工具在Andorid-SDK目錄下的platform-tool裡面
連上adb,復現問題,然後在DOS視窗執行以下命令可以抓取systrace資訊,最後生成一個trace.html檔案:
python systrace.py -t 10 -b 40960 gfx freq sched input view am wm power idle sync ion memory irq freq -o trace.html
-t 後面的10是抓10秒的 trace日誌
-b 40960 是buffer緩衝區大小
上面具體的引數含義可以參考:https://www.cnblogs.com/yuanqiangfei/p/18371847
4、開啟trace.html檔案分析
具體systrace分析方法可參考以下連結:Android效能分析