Synopsys DesignWare Cores (DWC) PCIe 效能監控單元 (PMU)¶
DesignWare Cores (DWC) PCIe PMU¶
PMU 是 PCIe 配置空間暫存器塊,由 Vendor-Specific Extended Capability 中每個 PCIe Root Port 提供,命名為 RAS D.E.S (除錯、錯誤注入和統計)。
顧名思義,RAS DES 功能支援系統級除錯、AER 錯誤注入和統計資訊收集。為了方便統計資訊收集,Synopsys DesignWare Cores PCIe 控制器提供以下兩個功能
一個 64 位計數器用於基於時間的分析(RX/TX 資料吞吐量和在每個低功耗 LTSSM 狀態下花費的時間)和
一個 32 位計數器用於事件計數(指定通道的錯誤和非錯誤事件)
注意:沒有計數器溢位中斷。
基於時間的分析¶
使用此功能,您可以獲得有關 RX/TX 資料吞吐量和控制器在每個低功耗 LTSSM 狀態下花費的時間的資訊。 PMU 以兩類測量資料
Group#0:控制器停留在 LTSSM 狀態的時間百分比。
Group#1:已處理的資料量(以 16 位元組為單位)。
通道事件計數器¶
使用此功能,您可以獲得控制器中特定通道中的錯誤和非錯誤資訊。 PMU 事件由以下所有內容選擇
組 i
組 i 中的事件 j
通道 k
某些事件僅存在於特定配置中。
DesignWare Cores (DWC) PCIe PMU 驅動程式¶
此驅動程式為每個 PCIe Root Port 新增 PMU 裝置,並根據 Root Port 的 SBDF 進行命名。例如,
0001:30:03.0 PCI bridge: Device 1ded:8000 (rev 01)
此 Root Port 的 PMU 裝置名稱為 dwc_rootport_13018。
DWC PCIe PMU 驅動程式註冊一個 perf PMU 驅動程式,該驅動程式在 sysfs 中提供可用事件和配置選項的描述,請參閱 /sys/bus/event_source/devices/dwc_rootport_{sbdf}。
“format”目錄描述 perf_event_attr 結構的 config 欄位的格式。“events”目錄為所有記錄的事件提供配置模板。例如,“rx_pcie_tlp_data_payload”等效於“eventid=0x21,type=0x0”。
“perf list”命令應列出 sysfs 中的可用事件,例如
$# perf list | grep dwc_rootport
<...>
dwc_rootport_13018/Rx_PCIe_TLP_Data_Payload/ [Kernel PMU event]
<...>
dwc_rootport_13018/rx_memory_read,lane=?/ [Kernel PMU event]
基於時間的分析事件使用¶
計算 PCIe RX TLP 資料有效負載的示例用法(以位元組為單位)
$# perf stat -a -e dwc_rootport_13018/Rx_PCIe_TLP_Data_Payload/
可以使用以下公式計算平均 RX/TX 頻寬
PCIe RX 頻寬 = rx_pcie_tlp_data_payload / Measure_Time_Window PCIe TX 頻寬 = tx_pcie_tlp_data_payload / Measure_Time_Window
通道事件使用¶
每個通道具有相同的事件集,為了避免生成數百個事件的列表,使用者需要顯式指定通道 ID,例如
$# perf stat -a -e dwc_rootport_13018/rx_memory_read,lane=4/
該驅動程式不支援取樣,因此“perf record”將無法工作。不支援每個任務(沒有“-a”)perf 會話。