Systrace命令的使用

命令用法

sched: CPU調(diào)度的信息,非常重要鳞滨;你能看到CPU在每個(gè)時(shí)間段在運(yùn)行什么線程洞焙;線程調(diào)度情況,比如鎖信息拯啦。
gfx:Graphic系統(tǒng)的相關(guān)信息澡匪,包括SerfaceFlinger,VSYNC消息褒链,Texture唁情,RenderThread等;分析卡頓非常依賴這個(gè)甫匹。
view: View繪制系統(tǒng)的相關(guān)信息甸鸟,比如onMeasure,onLayout等兵迅;對(duì)分析卡頓比較有幫助抢韭。
am:ActivityManager調(diào)用的相關(guān)信息;用來(lái)分析Activity的啟動(dòng)過(guò)程比較有效恍箭。

  1. 測(cè)試列表滑動(dòng)刻恭, 桌面滑動(dòng)等流暢性問(wèn)題

    gfx input view

  2. 若在上面的基礎(chǔ)上 還需要分析HWUI

    gfx input view hwui

  3. 測(cè)試app啟動(dòng)或者進(jìn)入某個(gè)界面的速度

    gfx input view am wm res

  4. 懷疑有GC或者是IO導(dǎo)致的卡頓

    gfx input view dalvik disk

  5. 懷疑有power相關(guān)的問(wèn)題

    gfx input view res am wm power

systrace 查看線程狀態(tài)

1.綠色:運(yùn)行中

作用: 查看Running狀態(tài)的線程,查看其運(yùn)行的時(shí)間扯夭,與競(jìng)品做對(duì)比鳍贾,分析快或者慢的原因

2.藍(lán)色:

作用:Runnable狀態(tài)的線程持續(xù)時(shí)間越長(zhǎng),則表示cpu調(diào)度越忙勉抓,沒(méi)有及時(shí)處理這個(gè)任務(wù)贾漏,是否后臺(tái)有太多的任務(wù)在跑,是否頻率太低

3.白色:

作用: 一般都是在等待事情驅(qū)動(dòng) 在互斥鎖上被阻塞

4.橘色 不可中斷的睡眠態(tài)藕筋? 一般都是線程在IO上被阻塞 或者等待磁盤(pán)操作 IO操作很慢

大量的橘色出現(xiàn) 表明 低內(nèi)存狀態(tài)

5.紫色: 可中斷的睡眠態(tài)纵散,線程在另一個(gè)內(nèi)核上被阻塞 ,有可能是正常的隐圾,也有可能是不正常的

命令行

python systrace.py [options] [category1] [category2] ... [categoryN]

options

其中options可取值:

options 解釋
-o <FILE> 輸出的目標(biāo)文件
-t N, –time=N 執(zhí)行時(shí)間伍掀,默認(rèn)5s
-b N, –buf-size=N buffer大小(單位kB),用于限制trace總大小暇藏,默認(rèn)無(wú)上限
-k <KFUNCS>蜜笤,–ktrace=<KFUNCS> 追蹤kernel函數(shù),用逗號(hào)分隔
-a <APP_NAME>,–app=<APP_NAME> 追蹤應(yīng)用包名盐碱,用逗號(hào)分隔
–from-file=<FROM_FILE> 從文件中創(chuàng)建互動(dòng)的systrace
-e <DEVICE_SERIAL>,–serial=<DEVICE_SERIAL> 指定設(shè)備
-l, –list-categories 列舉可用的tags

category

category可取值:

category 解釋
gfx Graphics
input Input
view View System
webview WebView
wm Window Manager
am Activity Manager
sm Sync Manager
audio Audio
video Video
camera Camera
hal Hardware Modules
app Application
res Resource Loading
dalvik Dalvik VM
rs RenderScript
bionic Bionic C Library
power Power Management
sched CPU Scheduling
irq IRQ Events
freq CPU Frequency
idle CPU Idle
disk Disk I/O
mmc eMMC commands
load CPU Load
sync Synchronization
workq Kernel Workqueues
memreclaim Kernel Memory Reclaim
regulators Voltage and Current Regulators

示例

例如把兔,在systrace.py所在目錄下執(zhí)行指令:

python systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq
./systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq //等價(jià)

又例如沪伙,輸出全部的trace信息

python systrace.py -b 32768 -t 5 -o mytrace.html gfx input view webview wm am sm audio video camera hal app res dalvik rs bionic power sched irq freq idle disk mmc load sync workq memreclaim regulators

注:收集trace,需要提前安裝python县好,并且一定要注意必須是python 2.x围橡,而不是能3.x,否則可能會(huì)出現(xiàn)問(wèn)題缕贡。另外翁授,buffer大小不可過(guò)大,否則會(huì)出現(xiàn)oom異常晾咪。

Google瀏覽器輸入chrome://tracing/進(jìn)行查看

圖形化

橫坐標(biāo)是以時(shí)間為單位收擦,縱坐標(biāo)是以進(jìn)程-線程的方式來(lái)劃分,同一進(jìn)程的線程為一組放在一起谍倦,可收縮/展開(kāi)塞赂,


1608286791(1).jpg

Frames

產(chǎn)生的html格式的trace文件必須使用Google Chrome打開(kāi),才能正確地解析并已圖標(biāo)形式展現(xiàn)昼蛀。上圖中紅色圈起來(lái)的减途,都是可以點(diǎn)擊操作的地方,最上方是搜索欄曹洽,往下處是Alerts按鈕,再往下是鼠標(biāo)操作模式辽剧。

在每個(gè)app進(jìn)程送淆,都有一個(gè)Frames行,正常情況以綠色的圓點(diǎn)表示怕轿。當(dāng)圓點(diǎn)顏色為黃色或者紅色時(shí)偷崩,意味著這一幀超過(guò)16.6ms(即發(fā)現(xiàn)丟幀),這時(shí)需要通過(guò)放大那一幀進(jìn)一步分析問(wèn)題撞羽。對(duì)于Android 5.0(API level 21)或者更高的設(shè)備阐斜,該問(wèn)題主要聚焦在UI Thread和Render Thread這兩個(gè)線程當(dāng)中。對(duì)于更早的版本诀紊,則所有工作在UI Thread谒出。

1608286879(1).jpg

Alerts

Systrace能自動(dòng)分析trace中的事件,并能自動(dòng)高亮性能問(wèn)題作為一個(gè)Alerts邻奠,建議調(diào)試人員下一步該怎么做笤喳。

比如對(duì)于丟幀是,點(diǎn)擊黃色或紅色的Frames圓點(diǎn)便會(huì)有相關(guān)的提示信息碌宴;另外杀狡,在systrace的最右上方,有一個(gè)Alerts tab可以展開(kāi)贰镣,這里記錄著所有的的警告提示信息呜象。


1608286970(1).jpg

注:本文講到最新版的systrace膳凝,其中sdk 23,chrome版本49.0恭陡,部分功能在老版本systrace并沒(méi)有蹬音。

快捷操作

導(dǎo)航操作

導(dǎo)航操作 作用
w 放大,[+shift]速度更快
s 縮小子姜,[+shift]速度更快
a 左移祟绊,[+shift]速度更快
d 右移,[+shift]速度更快

快捷操作

常用操作 作用
f 放大當(dāng)前選定區(qū)域
m 標(biāo)記當(dāng)前選定區(qū)域
v 高亮VSync
g 切換是否顯示60hz的網(wǎng)格線
0 恢復(fù)trace到初始態(tài)哥捕,這里是數(shù)字0而非字母o
一般操作 作用
h 切換是否顯示詳情
/ 搜索關(guān)鍵字
enter 顯示搜索結(jié)果牧抽,可通過(guò)← →定位搜索結(jié)果
` 顯示/隱藏腳本控制臺(tái)
? 顯示幫助功能

對(duì)于腳本控制臺(tái),除了能當(dāng)做記事本的功能遥赚,目前還不清楚有啥功能扬舒,或許還在開(kāi)發(fā)中。

模式切換

  1. Select mode: 雙擊已選定區(qū)能將所有相同的塊高亮選中凫佛;(對(duì)應(yīng)數(shù)字1)
  2. Pan mode: 拖動(dòng)平移視圖(對(duì)應(yīng)數(shù)字2)
  3. Zoom mode:通過(guò)上/下拖動(dòng)鼠標(biāo)來(lái)實(shí)現(xiàn)放大/縮小功能讲坎;(對(duì)應(yīng)數(shù)字3)
  4. Timing mode:拖動(dòng)來(lái)創(chuàng)建或移除時(shí)間窗口線。(對(duì)應(yīng)數(shù)字4)

可通過(guò)按數(shù)字1~4愧薛,用于切換鼠標(biāo)模式晨炕; 另外,按住alt鍵毫炉,再滾動(dòng)鼠標(biāo)滾輪能實(shí)現(xiàn)放大/縮小功能瓮栗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞄勾,隨后出現(xiàn)的幾起案子费奸,更是在濱河造成了極大的恐慌,老刑警劉巖进陡,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愿阐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡趾疚,警方通過(guò)查閱死者的電腦和手機(jī)缨历,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盗蟆,“玉大人戈二,你說(shuō)我怎么就攤上這事≡剩” “怎么了觉吭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仆邓。 經(jīng)常有香客問(wèn)我鲜滩,道長(zhǎng)伴鳖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任徙硅,我火速辦了婚禮榜聂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嗓蘑。我一直安慰自己须肆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布桩皿。 她就那樣靜靜地躺著豌汇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泄隔。 梳的紋絲不亂的頭發(fā)上拒贱,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音佛嬉,去河邊找鬼逻澳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛暖呕,可吹牛的內(nèi)容都是我干的斜做。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼湾揽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼陨享!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钝腺,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赞厕,沒(méi)想到半個(gè)月后艳狐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皿桑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年毫目,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诲侮。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镀虐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沟绪,到底是詐尸還是另有隱情刮便,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布绽慈,位于F島的核電站恨旱,受9級(jí)特大地震影響辈毯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搜贤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仪芒。 院中可真熱鬧唁影,春花似錦、人聲如沸掂名。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)铆隘。三九已至卓舵,卻和暖如春怀吻,著一層夾襖步出監(jiān)牢的瞬間妆档,已是汗流浹背窟社。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工屉佳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篙顺,地道東北人晋南。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓役听,卻偏偏與公主長(zhǎng)得像吓歇,于是被迫代替她去往敵國(guó)和親雳窟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尊浪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容