本指南說明如何瀏覽及解讀 Systrace 報表。如要解讀 Perfetto 報表,請參閱「追蹤記錄處理器」說明文件。
一般報表的元素
Systrace 會產生一個輸出 HTML 檔案,其中包含一系列的區段。此報表會列出每個處理程序的執行緒。如果指定的執行緒轉譯 UI 影格,報表也會指出時間軸上轉譯的影格。在報表中從左向右移動時,時間就會往後移動。
從上到下,報表包含下列部分。
使用者互動
第一個部分包含代表應用程式或遊戲內特定使用者的互動列,例如輕觸螢幕。這些互動有實用的時間標記。
CPU 活動
下一個部分顯示每個 CPU 中的執行緒活動列。長條會顯示所有應用程式的 CPU 活動,包括應用程式或遊戲。
CPU 活動區段可展開,方便檢視每個 CPU 的時鐘頻率。圖 1 顯示收合的 CPU 活動區段範例,圖 2 顯示展開以顯示時鐘頻率:
系統事件
這個部分的直方圖會顯示特定的系統層級事件,例如材質數和特定物件的總大小。
值得注意的直方圖是標示為 SurfaceView 的直方圖。計數代表在顯示管道中傳入,且正在等候於裝置螢幕中顯示的組成影格緩衝區數量。由於大部分裝置是雙重或三重緩衝處理,所以這個計數幾乎都是 0、1 或 2。
其他長方圖說明 Surface Flinger 程序,包括 VSync 事件及 UI 執行緒切換工作,如圖 3 所示:
顯示畫面
這通常是報表中最高的部分,有許多彩色線條和長條堆疊。這些形狀代表已建立的特定執行緒狀態和影格堆疊。堆疊的每個層級都代表對 beginSection()
的呼叫,或為應用程式或遊戲定義的自訂追蹤記錄事件開頭。
每個長條堆疊上方的多色線條,代表特定執行緒在一段時間內的狀態組合。線條的每一個區段可包含下列其中一個顏色:
- 綠色:執行中
- 執行緒正在完成與程序相關的工作,或正在回應中斷。
- 藍色:可執行
- 執行緒可以執行,但目前並未排定執行。
- 白色:休眠中
- 執行緒沒有需要處理的工作,可能是因為執行緒因互斥鎖而封鎖。
- 橘色:不受干擾的休眠
- 執行緒已遭 I/O 封鎖,或是正在等待磁碟作業完成。
- 紫色:可干擾的休眠
- 執行緒已在其他核心作業中封鎖 (通常是記憶體管理)。
鍵盤快速鍵
下表列出檢視 Systrace 報表時可使用的鍵盤快速鍵:
索引鍵 | 說明 | |
---|---|---|
W | 放大追蹤記錄時間軸。 | |
A | 在追蹤記錄時間軸上向左平移。 | |
S | 縮小追蹤記錄範圍。 | |
D | 在追蹤記錄時間軸上向右平移。 | |
E | 將追蹤記錄時間軸置於目前滑鼠位置的中央。 | |
M | 框住目前選取範圍。 | |
1 | 將目前使用中的選擇模式變更為「選取」模式。 對應於滑鼠選取工具列中的第 1 個按鈕 (見右圖)。 |
|
2 | 將目前使用中的選擇模式變更為「平移」模式。 對應於滑鼠選取工具列中的第 2 個按鈕 (見右圖)。 |
|
3 | 將目前使用中的選擇模式變更為「縮放」模式。 對應於滑鼠選取工具列中的第 3 個按鈕 (見右圖)。 |
|
4 | 將目前使用中的選擇模式變更為「時間」模式。 對應於滑鼠選取工具列中的第 4 個按鈕 (見右圖)。 |
|
G | 在目前所選工作開始時顯示格線。 | |
Shift + G | 在目前所選工作結束時顯示格線。 | |
向左鍵 | 在目前選取的時間軸上選取前一個事件。 | |
向右鍵 | 在目前選取的時間軸上選取下一個事件。 |
調查效能問題
與 Systrace 報表互動時,您可以檢查記錄期間的裝置 CPU 使用。如需瀏覽 HTML 報表的相關說明,請參閱鍵盤快速鍵一節,或按一下? 按鈕。
以下各節說明如何檢查報表中的資訊,找出並修正效能問題。
辨別效能問題
在 Systrace 報表中瀏覽時,您可以進行下列一或多項操作,更輕鬆地找出效能問題:
- 在時間間隔周圍繪製矩形以選取要查看的時間間隔。
- 使用尺規工具標示或標明有問題的區域。
- 依序點選「View Options」(檢視選項) >「Highlight VSync」(醒目顯示 VSync),顯示每個畫面的重新整理作業。
檢查 UI 畫面和快訊
如圖 4 所示,Systrace 報表會列出轉譯 UI 畫面的各個程序,並在時間軸上指出每個轉譯週期。在 16.6 毫秒內轉譯的影格如果必須維持穩定的每秒 60 個影格,就會以綠色圓形圓圈表示。影格的轉譯時間如果超過 16.6 毫秒,就會以黃色或紅色影格圓圈標註。

按一下影格圓圈可醒目顯示該影格,並提供有關系統轉譯工作的其他相關資訊 (包括快訊)。報表也會顯示系統轉譯該影格時執行的方法。您可以調查這些方法,判斷造成 UI 資源浪費的可能原因。

選取緩慢的影格後,您可能會在報表的底部窗格看到快訊。圖 5 中顯示的快訊指出,影格的主要問題是 ListView
回收和重新繫結的時間過久。追蹤記錄中有相關事件的連結,可進一步說明系統在這段期間的操作。
如要查看工具在追蹤記錄中發現的每個快訊,以及裝置觸發每則快訊的次數,請按一下視窗最右側的「Alerts」(快訊) 分頁標籤,如圖 6 所示。「Alerts」(快訊) 面板可協助您瞭解在追蹤記錄中發生的問題,以及導致資源浪費發生的頻率。 您可以將此面板視為待修正的錯誤清單。一般來說,只要在一個區域稍微變更或改進,就能移除整組快訊。

如果在 UI 執行緒上發現太多工作,請使用下列其中一種方式判斷哪些耗用了過多的 CPU 時間:
- 如果要瞭解哪些方法可能會導致出現瓶頸,請在這些方法中加入追蹤記錄標記。詳情請參閱「在程式碼中定義自訂事件」指南。
- 如果不確定 UI 瓶頸的問題來源,請使用 Android Studio 提供的 CPU 分析器。您可以產生追蹤記錄,然後使用 CPU 分析器匯入及檢查這些記錄。