分析頂點記憶體頻寬用量

頂點資料的記憶體頻寬可能是遊戲 GPU 效能的潛在瓶頸。AGI 系統設定檔中有一些計數器,可以協助診斷頂點記憶體頻寬問題。

Qualcomm Adreno 計數器

在搭載 Qualcomm Adreno GPU 的裝置上,一些著名的計數器包括:

議價 說明
Vertex 記憶體讀取量 從外部記憶體讀取的頂點資料頻寬。
平均位元組數/Vertex 頂點資料的平均大小,以位元組為單位。
Vertex 擷取攤位百分比 頂點資料中 GPU 遭到封鎖的時鐘週期百分比。

ARM Mali 計數器 (WIP)

在搭載 ARM Mali GPU 的裝置上,一些著名的計數器包括:

議價 說明
載入/儲存外部記憶體中的讀取節拍 載入/儲存單元從外部記憶體讀取的資料訊號,是著色器核心的平均值。
從 L2 快取載入/儲存讀取訊號 載入/商店單位從 L2 快取讀取的資料訊號,是著色器核心的平均值。
[更多]

為了根據平均讀取訊號計算整體頻寬,計數器值會乘以匯流排寬度 (通常為 16 個位元組) 和著色器核心總數。[更多]

計數器分析

如要測量這些計數器的行為,您可以測量單一 GPU 影格在內的平均值和尖峰頻寬,而這個做法可透過連續的「GPU 使用率」區塊進行去解。

單一影格的 Vertex 記憶體讀取頻寬,平均值為 327 MBps,最大值為 1.16 GBps
圖 1: 單一影格的 Vertex 記憶體讀取頻寬,平均值為 327 MBps,峰值值為 1.16 GBps

建議的最高頂點記憶體讀取頻寬不超過 1.5 GBps,且平均頻寬不超過 500 MBps。值越大,表示可能有下列其中一項常見問題:

  • 頂點大小過大:Vertice 可能有大型的頂點屬性或大量頂點屬性,影響頂點的陰影時間。
  • 不會分割 Vertex 屬性串流:Vertex 屬性會與單一緩衝區交錯,因此降低快取效率。
  • 每個影格提交的頂點過多:較複雜的模型和/或大量模型可能會佔用較大的頻寬,且需要較長時間才能遮蔽。

Vertex 大小問題也可以透過平均位元組 / Vertex 測試群組來診斷,建議不超過 32 個位元組或頂點。

單一影格的平均頂點大小,平均值為 31.3 個位元組
圖 2: 單一影格的平均頂點大小,平均值為 31.3 個位元組

如要診斷可能發生的問題,最好的方法就是執行影格設定檔追蹤記錄來分析頂點格式