Systrace工具的使用
翻譯原文地址:https://developer.android.com/studio/profile/systrace-commandline.html#requirements
通過抓取和展示app的執(zhí)行次數(shù),Systrace工具可以通幫助你分析app的性能問題,Systrace工具將android kernel層的數(shù)據(jù)比如CPU調(diào)度、disk activity以及應(yīng)用線程收集起來,并生成HTML報(bào)告,在這個(gè)HTML報(bào)告里,可以看到指定時(shí)間內(nèi)系統(tǒng)進(jìn)程的所有情況。
systrace工具對(duì)于診斷應(yīng)用的不流暢的問題非常有效,可以參照https://developer.android.com/studio/profile/systrace.html
要求
- SDK 版本20及以上
- python環(huán)境
- android4.1及以上設(shè)備(需打開調(diào)試模式)
- 可以通過用戶界面去調(diào)用,也可以通過cmd的方式去調(diào)用
用戶界面調(diào)用
- 打開Android studio,Tools -- Android -- Android Device Monitor,或則直接在sdk中的tools中找到Android Device Monitor打開
- 在彈出的Android Device Monitor中,左側(cè)Devices選項(xiàng)卡的下面一排,點(diǎn)擊下圖中圈出的位置
Android Device Monitor
- 配置trace信息,點(diǎn)擊OK后,會(huì)在對(duì)應(yīng)目錄下生成html文件
5.PNG
CMD命令調(diào)用
CMD的在androi4.2及以下、android4.3級(jí)以上的用法是不一樣的,用法如下“
$ python systrace.py [options] [category1] [category2] ... [categoryN]
android4.3及以上
在這個(gè)版本上,你可以不配置分類tag,也可以自定義。使用方式如下:
$ cd android-sdk/platform-tools/systrace
$ python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
提示:如果你想要查看task name,必須配置sched
命令行列表
選項(xiàng) | 描述 |
---|---|
-h 或 --help | 查看幫助 |
-o <FILE> | 用于指定html文件的存放路徑 |
-t N 或 --time=N | 用于指定抓取的時(shí)長(zhǎng),N為時(shí)長(zhǎng),單位為s,默認(rèn)為5s,如果要指定10s,則”-t 10“ |
-b N或--buf-size=N | 用于指定緩存大小,N為大小 |
-k <KFUNCS> 或 --ktrace=<KFUNCS> | 指定activity的kernel方法,按逗號(hào)分割 |
-l 或 --list-categories | 列出可選的分類,不通的設(shè)備分類可能不同 |
-a <APP_NAME> 或 --app=<APP_NAME> | 開啟app的trace,進(jìn)程名按逗號(hào)分割,這些app必須有trace類的調(diào)用 |
--from-file=<FROM_FILE> | 根據(jù)指定的文件創(chuàng)建html,而不是實(shí)時(shí)的trace,<FROM_FILE>為源文件路徑 |
-e <DEVICE_SERIAL> 或 --serial=<DEVICE_SERIAL> | 指定設(shè)備的序列號(hào) |
android4.2及以下
在4.2之前的版本需要兩部操作,首先,需要配置想要抓取的trace tag,然后再運(yùn)行trace。比如:
$ cd android-sdk/platform-tools/systrace
$ python systrace.py --set-tags gfx,view,wm
$ adb shell stop
$ adb shell start
$ python systrace.py --disk --time=10 -o mynewtrace.html
命令行列表
選項(xiàng) | 描述 |
---|---|
-h 或 --help | 查看幫助 |
-o <FILE> | 用于指定html文件的存放路徑 |
-t N 或 --time=N | 用于指定抓取的時(shí)長(zhǎng),N為時(shí)長(zhǎng),單位為s,默認(rèn)為5s,如果要指定10s,則”-t 10“ |
-b N或--buf-size=N | 用于指定緩存大小,N為大小 |
-d 或 --disk | 追蹤activity disk的輸入和輸出,需要root設(shè)備 |
-i 或 --cpu-idle | 追蹤C(jī)PU的idel事件 |
-l 或 --cpu-load | 追蹤C(jī)PU的加載 |
-s或--no-cpu-sched | 防止CPU調(diào)度的追蹤,通過降低trace buffer的速率達(dá)到加長(zhǎng)的trace時(shí)長(zhǎng)的目的 |
-u 或 --bus-utilization | 追蹤bus的使用,需要root設(shè)備 |
-w 或 --workqueue | 追蹤work queue,需要root設(shè)備 |
--set-tags=<TAGS> | 用于配置tag選項(xiàng), |
對(duì)于上面的--set-tags配置,可選項(xiàng)如下:
- gfx 圖形圖像
- input 輸入
- view 視圖
- webview
- wm Window Manager
- am Activity Manager
- sync Synchronization Manager
- audio
- video
- camera
注意:設(shè)置tag后,需要重啟framework(’adb shell stop;adb shell start‘)暴躁配置生效。
如何查看trace.html文件
按鍵 | 作用 |
---|---|
w | 放大時(shí)間軸 |
s | 縮小時(shí)間軸 |
a | 向左移動(dòng)面板 |
d | 向右移動(dòng)面板 |
e | 以當(dāng)前鼠標(biāo)的位置為時(shí)間軸的中心 |
g | 在選中的task開始時(shí)刻顯示紅線條 |
Shift+g | 在選中的task結(jié)束時(shí)刻顯示紅線條 |
向右箭頭 | 選中當(dāng)前時(shí)間軸下一個(gè)事件 |
向左箭頭 | 選中當(dāng)前時(shí)間軸下一個(gè)事件 |