Android Systrace(1) -- 介紹和抓取

目錄

1. 介紹systrace

2. 抓取systrace

2.1 systrace.py工具

2.2 Device Monitor(DDMS)

2.3 自定義systrace

3. 打開trace.html

4. 操作快捷鍵


 

1. 介紹systrace

 

一般來說,我們的機器以60幀/秒顯示時(也就是16.6 millisecond),用戶會感覺機器會流暢。如果出現顯示時出現丟幀的情況,我們要知道系統在做什麼。

systrace是Android4.1版本之後推出的,對系統Performance分析的工具。

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目錄/sdk/platform-tools/systrace中,其內部將調用atrace程序)用來配置數據採集的方式(如採集數據的標籤、輸出文件名等)和收集ftrace統計數據並生成一個結果網頁文件供用戶查看。

 

2. 抓取systrace

 

google systrace說明

有三種方式抓取systrace:

 

2.1 systrace.py工具

cd android-sdk/platform-tools/systrace python systrace.py --app=sectionName --time=10 -o mynewtrace.html sched gfx view wm

 

2.2 Device Monitor(DDMS)

可以使用Android Studio集成開發工具,切換到DDMS,點擊devices,點擊Systrace按鈕

 

1.在sdk裏打開Android Device Monitor

ubuntu@ubuntu:~/Android/Sdk/tools$ sudo ./monitor OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0

 

2.點擊dump trace按鈕配置好後,操作手機就會自動保存trace.html

 

選擇要分析的進程(比如

com.google.process.gapps

),點擊Capture system wide trace using Android systrace

(下圖右上角箭頭所指的地方)

抓取Systrace的方法

 

 

抓取過多次trace,請及時清理緩存

假如抓取過多次trace,爲避免數據丟失,請及時清除緩存中的內容,清理地方在

Android Device Monitor

的右下角,如下圖所示

及時清除緩存中的信息,防止抓取trace內容無效

 

2.3 自定義systrace

 

在代碼裏定義trace和加log是一樣的

2.3.1 app層

import android.os.Trace; 
Trace.beginSection(String sectionName) 
Trace.endSection()

2.3.2 Java Framework

import android.os.Trace; Trace.traceBegin(long traceTag, String methodName) Trace.traceEnd(long traceTag) 抓取systrace分析。

2.3.3 Native framework層

#include <cutils/trace.h> ATRACE_CALL() 抓取systrace分析。

 

3. 打開trace.html

 

使用chrome瀏覽器,輸入 chrome://tracing/ ,然後load trace文件打開

4. 操作快捷鍵

 

4.1 導航操作

導航操作

作用

w

放大,[+shift]速度更快

s

縮小,[+shift]速度更快

a

左移,[+shift]速度更快

d

右移,[+shift]速度更快

4.2 快捷操作

 

常用操作

作用

f

放大當前選定區域

m

標記當前選定區域

v

高亮VSync

g

切換是否顯示60hz的網格線

0

恢復trace到初始態,這裏是數字0而非字母o

一般操作

作用

h

切換是否顯示詳情

/

搜索關鍵字

enter

顯示搜索結果,可通過← →定位搜索結果

`

顯示/隱藏腳本控制檯

?

顯示幫助功能

 

對於腳本控制檯,除了能當做記事本的功能,目前還不清楚有啥功能,或許還在開發中。

 

使用:

1. w s ad控制移動縮小,

2. 右邊選擇模式,1模式,箭頭,可以點擊查看信息,4,能夠框區域,看時間

3. 數字0返回到中間

4.v可以顯示16.6s一幀的網格

5.查看幀時間,選擇frame上一幀,按m標記當前的區域,任意選中一段方法,按左鍵選中,m都可以看這段時間

6. 查看幀具體的事情,選中frame 圈圈,按f,放大選中區域

 

 模式切換

  • Select mode: 雙擊已選定區能將所有相同的塊高亮選中;(對應數字1)
  • Pan mode: 拖動平移視圖(對應數字2)
  • Zoom mode:通過上/下拖動鼠標來實現放大/縮小功能;(對應數字3)
  • Timing mode:拖動來創建或移除時間窗口線。(對應數字4)

可通過按數字1~4,用於切換鼠標模式; 另外,按住alt鍵,再滾動鼠標滾輪能實現放大/縮小功能。

 

參考鏈接

https://www.jianshu.com/p/00ef51716c3f

https://source.android.com/devices/tech/debug/systrace

https://www.androidperformance.com/2019/07/23/Android-Systrace-Pre/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章