基本流程
Systrace是android性能調(diào)試優(yōu)化的常用工具,它可以收集進(jìn)程的活動(dòng)信息,如界面布局、UI渲染、binder通信等;也可以收集內(nèi)核信息,如cpu調(diào)度、IO活動(dòng)、中斷等;這些信息會(huì)統(tǒng)一時(shí)間軸,在Chrome瀏覽器中顯示出來(lái),非常方便工程師性能調(diào)試、優(yōu)化卡頓等工作。
簡(jiǎn)易的流程圖如下,systrace是基于ftrace實(shí)現(xiàn)的,而ftrace 是 Linux 內(nèi)核中的調(diào)試跟蹤機(jī)制。

首先systrace指定抓取trace的類(lèi)別等參數(shù),然后觸發(fā)手機(jī)端的/system/bin/atrace 開(kāi)啟對(duì)應(yīng)文件節(jié)點(diǎn)的信息記錄,接著atrace會(huì)讀取 ftrace 的緩存,生成只包含ftrace信息的atrace_raw。
Systrace會(huì)進(jìn)一步收集系統(tǒng)的ps、task等信息,這些信息是為了協(xié)助解析atrace_raw中的ftrace信息,比如ps信息可以得到進(jìn)程的名稱(chēng),而不是難記的pid號(hào)。處理后的ftrace信息將和systrace目錄下的prefix.html、systrace_trace_viewer.html、suffix.html整合為一體,成為單個(gè)的html文件。
當(dāng)瀏覽systrace信息時(shí),Chrome瀏覽器借助systrace解析器(通過(guò)chrome://tracing訪問(wèn)),解析上面生成的trace.html文件,把其中原始的ftrace信息分門(mén)別類(lèi),再按照時(shí)間軸聚合排列,繪制出不同色塊,簡(jiǎn)潔可觀的顯示在html頁(yè)面上。