APM X-Gene SoC 效能監控單元 (PMU)¶
X-Gene SoC PMU 由各種獨立的系統裝置 PMU 組成,例如 L3 快取、I/O 橋、記憶體控制器橋和記憶體控制器。 這些 PMU 裝置的架構大致遵循與 ARM 核心的 PMU 相同的模型。 這些 PMU 共享相同頂層中斷和狀態 CSR 區域。
PMU (perf) 驅動程式¶
xgene-pmu 驅動程式註冊多個 perf PMU 驅動程式。 每個 perf 驅動程式都在 sysfs 中提供對其可用事件和配置選項的描述,請參閱 /sys/bus/event_source/devices/<l3cX/iobX/mcbX/mcX>/。
“format”目錄描述 perf_event_attr 結構的 config(事件 ID)、config1(代理 ID)欄位的格式。“events”目錄為 perf 工具可以使用的所有受支援事件型別提供配置模板。 例如,“l3c0/bank-fifo-full/”等效於“l3c0/config=0x0b/”。
大多數 SoC PMU 都有一個特定的代理 ID 列表,用於監視特定資料路徑的效能。 例如,L3 快取的代理可以是特定的 CPU 或 I/O 橋。 每個 PMU 都有一組 2 個暫存器,能夠遮蔽來自其請求的代理。 如果設定了與代理對應的位號,則僅當事件是由該代理的請求引起時才會被計數。 每個代理 ID 位都與“config1”欄位中的對應位反向對映。 預設情況下,將對所有代理請求計數事件 (config1 = 0x0)。 有關每個 PMU 的所有受支援代理,請參閱 APM X-Gene 使用者手冊。
每個 perf 驅動程式還提供一個“cpumask”sysfs 屬性,其中包含將用於處理所有 PMU 事件的處理器上的單個 CPU ID。
perf 工具使用的示例
/ # perf list | grep -e l3c -e iob -e mcb -e mc
l3c0/ackq-full/ [Kernel PMU event]
<...>
mcb1/mcb-csw-stall/ [Kernel PMU event]
/ # perf stat -a -e l3c0/read-miss/,mcb1/csw-write-request/ sleep 1
/ # perf stat -a -e l3c0/read-miss,config1=0xfffffffffffffffe/ sleep 1
該驅動程式不支援取樣,因此“perf record”將不起作用。 不支援每個任務(沒有“-a”)的 perf 會話。