瀏覽 Systrace 報表

本指南說明如何瀏覽及解讀 Systrace 報表。如要解讀 Perfetto 報表,請參閱「追蹤記錄處理器」說明文件。

一般報表的元素

Systrace 會產生一個輸出 HTML 檔案,其中包含一系列的區段。此報表會列出每個處理程序的執行緒。如果指定的執行緒轉譯 UI 影格,報表也會指出時間軸上轉譯的影格。在報表中從左向右移動時,時間就會往後移動。

從上到下,報表包含下列部分。

使用者互動

第一個部分包含代表應用程式或遊戲內特定使用者的互動列,例如輕觸螢幕。這些互動有實用的時間標記。

CPU 活動

下一個部分顯示每個 CPU 中的執行緒活動列。長條會顯示所有應用程式的 CPU 活動,包括應用程式或遊戲。

CPU 活動區段可展開,方便檢視每個 CPU 的時鐘頻率。圖 1 顯示收合的 CPU 活動區段範例,圖 2 顯示展開以顯示時鐘頻率:

Systrace 報表的螢幕截圖
圖 1 Systrace 報表中的 CPU 活動範例 (收合檢視畫面)

Systrace 報表的螢幕截圖
圖 2. CPU 活動範例 (展開檢視),在 Systrace 報表中顯示 CPU 時鐘頻率

系統事件

這個部分的直方圖會顯示特定的系統層級事件,例如材質數和特定物件的總大小。

值得注意的直方圖是標示為 SurfaceView 的直方圖。計數代表在顯示管道中傳入,且正在等候於裝置螢幕中顯示的組成影格緩衝區數量。由於大部分裝置是雙重或三重緩衝處理,所以這個計數幾乎都是 0、1 或 2。

其他長方圖說明 Surface Flinger 程序,包括 VSync 事件及 UI 執行緒切換工作,如圖 3 所示:

Systrace 報表的螢幕截圖
圖 3 Systrace 報表中的 Surface Flinger 圖表範例

顯示畫面

這通常是報表中最高的部分,有許多彩色線條和長條堆疊。這些形狀代表已建立的特定執行緒狀態和影格堆疊。堆疊的每個層級都代表對 beginSection() 的呼叫,或為應用程式或遊戲定義的自訂追蹤記錄事件開頭。

每個長條堆疊上方的多色線條,代表特定執行緒在一段時間內的狀態組合。線條的每一個區段可包含下列其中一個顏色:

綠色:執行中
執行緒正在完成與程序相關的工作,或正在回應中斷。
藍色:可執行
執行緒可以執行,但目前並未排定執行。
白色:休眠中
執行緒沒有需要處理的工作,可能是因為執行緒因互斥鎖而封鎖。
橘色:不受干擾的休眠
執行緒已遭 I/O 封鎖,或是正在等待磁碟作業完成。
紫色:可干擾的休眠
執行緒已在其他核心作業中封鎖 (通常是記憶體管理)。

鍵盤快速鍵

下表列出檢視 Systrace 報表時可使用的鍵盤快速鍵:

索引鍵 說明
W 放大追蹤記錄時間軸。
A 在追蹤記錄時間軸上向左平移。
S 縮小追蹤記錄範圍。
D 在追蹤記錄時間軸上向右平移。
E 將追蹤記錄時間軸置於目前滑鼠位置的中央。
M 框住目前選取範圍。
1 將目前使用中的選擇模式變更為「選取」模式。 對應於滑鼠選取工具列中的第 1 個按鈕 (見右圖)。 Systrace 報表滑鼠選取器工具列的螢幕截圖
2 將目前使用中的選擇模式變更為「平移」模式。 對應於滑鼠選取工具列中的第 2 個按鈕 (見右圖)。 Systrace 報表滑鼠選取器工具列的螢幕截圖
3 將目前使用中的選擇模式變更為「縮放」模式。 對應於滑鼠選取工具列中的第 3 個按鈕 (見右圖)。 Systrace 報表滑鼠選取器工具列的螢幕截圖
4 將目前使用中的選擇模式變更為「時間」模式。 對應於滑鼠選取工具列中的第 4 個按鈕 (見右圖)。 Systrace 報表滑鼠選取器工具列的螢幕截圖
G 在目前所選工作開始時顯示格線。
Shift + G 在目前所選工作結束時顯示格線。
向左鍵 在目前選取的時間軸上選取前一個事件。
向右鍵 在目前選取的時間軸上選取下一個事件。

調查效能問題

與 Systrace 報表互動時,您可以檢查記錄期間的裝置 CPU 使用。如需瀏覽 HTML 報表的相關說明,請參閱鍵盤快速鍵一節,或按一下? 按鈕。

以下各節說明如何檢查報表中的資訊,找出並修正效能問題。

辨別效能問題

在 Systrace 報表中瀏覽時,您可以進行下列一或多項操作,更輕鬆地找出效能問題:

  • 在時間間隔周圍繪製矩形以選取要查看的時間間隔。
  • 使用尺規工具標示或標明有問題的區域。
  • 依序點選「View Options」(檢視選項) >「Highlight VSync」(醒目顯示 VSync),顯示每個畫面的重新整理作業。

檢查 UI 畫面和快訊

如圖 4 所示,Systrace 報表會列出轉譯 UI 畫面的各個程序,並在時間軸上指出每個轉譯週期。在 16.6 毫秒內轉譯的影格如果必須維持穩定的每秒 60 個影格,就會以綠色圓形圓圈表示。影格的轉譯時間如果超過 16.6 毫秒,就會以黃色或紅色影格圓圈標註。

放大影格檢視
圖 4. Systrace 會在放大長時間執行的影格後顯示

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

已選取問題影格
圖 5. 選取有問題的影格後,追蹤記錄報表下方就會顯示快訊,指出問題

選取緩慢的影格後,您可能會在報表的底部窗格看到快訊。圖 5 中顯示的快訊指出,影格的主要問題是 ListView 回收和重新繫結的時間過久。追蹤記錄中有相關事件的連結,可進一步說明系統在這段期間的操作。

如要查看工具在追蹤記錄中發現的每個快訊,以及裝置觸發每則快訊的次數,請按一下視窗最右側的「Alerts」(快訊) 分頁標籤,如圖 6 所示。「Alerts」(快訊) 面板可協助您瞭解在追蹤記錄中發生的問題,以及導致資源浪費發生的頻率。 您可以將此面板視為待修正的錯誤清單。一般來說,只要在一個區域稍微變更或改進,就能移除整組快訊。

顯示快訊分頁
圖 6. 按一下「Alert」(快訊) 按鈕即可顯示快訊分頁

如果在 UI 執行緒上發現太多工作,請使用下列其中一種方式判斷哪些耗用了過多的 CPU 時間:

  • 如果要瞭解哪些方法可能會導致出現瓶頸,請在這些方法中加入追蹤記錄標記。詳情請參閱「在程式碼中定義自訂事件」指南。
  • 如果不確定 UI 瓶頸的問題來源,請使用 Android Studio 提供的 CPU 分析器。您可以產生追蹤記錄,然後使用 CPU 分析器匯入及檢查這些記錄。