NVIDIA Tegra SoC Uncore 效能監控單元 (PMU)¶
NVIDIA Tegra SoC 包含各種系統 PMU,用於測量關鍵效能指標,例如記憶體頻寬、延遲和利用率
可伸縮一致性互連 (SCF)
NVLink-C2C0
NVLink-C2C1
CNVLink
PCIE
PMU 驅動¶
本文件中的 PMU 基於文件 ARM IHI 0091 中描述的 ARM CoreSight PMU 架構。由於這是一種標準架構,因此 PMU 由通用驅動“arm-cs-arch-pmu”管理。該驅動在 sysfs 中描述了每個 PMU 可用的事件和配置。請參閱以下部分以獲取每個 PMU 的 sysfs 路徑。與其他 uncore PMU 驅動一樣,該驅動提供了“cpumask”sysfs 屬性來顯示用於處理 PMU 事件的 CPU ID。還有一個“associated_cpus”sysfs 屬性,其中包含與 PMU 例項關聯的 CPU 列表。
SCF PMU¶
SCF PMU 監控系統級快取事件、CPU 流量以及到本地/遠端記憶體的強序 (SO) PCIE 寫入流量。有關 PMU 流量覆蓋範圍的更多資訊,請參閱流量覆蓋範圍。
此 PMU 裝置的事件和配置選項在 sysfs 中描述,請參閱 /sys/bus/event_source/devices/nvidia_scf_pmu_<socket-id>。
使用示例
統計 socket 0 中的事件 ID 0x0
perf stat -a -e nvidia_scf_pmu_0/event=0x0/
統計 socket 1 中的事件 ID 0x0
perf stat -a -e nvidia_scf_pmu_1/event=0x0/
NVLink-C2C0 PMU¶
NVLink-C2C0 PMU 監控來自透過 NVLink-C2C(片間互連)連線的 GPU/CPU 的入站流量。此 PMU 捕獲的流量型別因晶片配置而異
NVIDIA Grace Hopper 超級晶片:Hopper GPU 連線到 Grace SoC。
在此配置中,PMU 捕獲來自 GPU 的 GPU ATS 翻譯或 EGM 流量。
NVIDIA Grace CPU 超級晶片:兩個 Grace CPU SoC 連線。
在此配置中,PMU 捕獲來自遠端 SoC 的 PCIE 裝置的讀取和寬鬆有序 (RO) 寫入。
有關 PMU 流量覆蓋範圍的更多資訊,請參閱流量覆蓋範圍。
此 PMU 裝置的事件和配置選項在 sysfs 中描述,請參閱 /sys/bus/event_source/devices/nvidia_nvlink_c2c0_pmu_<socket-id>。
使用示例
統計來自連線到 socket 0 的 GPU/CPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_0/event=0x0/
統計來自連線到 socket 1 的 GPU/CPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_1/event=0x0/
統計來自連線到 socket 2 的 GPU/CPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_2/event=0x0/
統計來自連線到 socket 3 的 GPU/CPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_3/event=0x0/
NVLink-C2C 有兩個埠,可以連線到一個 GPU(佔用兩個埠)或兩個 GPU(每個埠一個 GPU)。使用者可以使用“port”點陣圖引數選擇要監控的埠。每個位代表埠號,例如“port=0x1”對應埠 0,“port=0x3”對應埠 0 和 1。如果未指定,PMU 預設會監控兩個埠。
埠過濾示例
統計來自連線到 socket 0 且在埠 0 上的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_0/event=0x0,port=0x1/
統計來自連線到 socket 0 且在埠 0 和埠 1 上的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_0/event=0x0,port=0x3/
NVLink-C2C1 PMU¶
NVLink-C2C1 PMU 監控來自透過 NVLink-C2C(片間互連)連線的 GPU 的入站流量。此 PMU 捕獲未翻譯的 GPU 流量,與捕獲 ATS 翻譯流量的 NvLink-C2C0 PMU 相反。有關 PMU 流量覆蓋範圍的更多資訊,請參閱流量覆蓋範圍。
此 PMU 裝置的事件和配置選項在 sysfs 中描述,請參閱 /sys/bus/event_source/devices/nvidia_nvlink_c2c1_pmu_<socket-id>。
使用示例
統計來自連線到 socket 0 的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_0/event=0x0/
統計來自連線到 socket 1 的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_1/event=0x0/
統計來自連線到 socket 2 的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_2/event=0x0/
統計來自連線到 socket 3 的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_3/event=0x0/
NVLink-C2C 有兩個埠,可以連線到一個 GPU(佔用兩個埠)或兩個 GPU(每個埠一個 GPU)。使用者可以使用“port”點陣圖引數選擇要監控的埠。每個位代表埠號,例如“port=0x1”對應埠 0,“port=0x3”對應埠 0 和 1。如果未指定,PMU 預設會監控兩個埠。
埠過濾示例
統計來自連線到 socket 0 且在埠 0 上的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_0/event=0x0,port=0x1/
統計來自連線到 socket 0 且在埠 0 和埠 1 上的 GPU 的事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_0/event=0x0,port=0x3/
CNVLink PMU¶
CNVLink PMU 監控來自遠端 socket 上的 GPU 和 PCIE 裝置到本地記憶體的流量。對於 PCIE 流量,此 PMU 捕獲讀取和寬鬆有序 (RO) 寫入流量。有關 PMU 流量覆蓋範圍的更多資訊,請參閱流量覆蓋範圍。
此 PMU 裝置的事件和配置選項在 sysfs 中描述,請參閱 /sys/bus/event_source/devices/nvidia_cnvlink_pmu_<socket-id>。
每個 SoC socket 都可以透過 CNVLink 連線到一個或多個 socket。使用者可以使用“rem_socket”點陣圖引數選擇要監控的遠端 socket。每個位代表 socket 號,例如“rem_socket=0xE”對應 socket 1 到 3。如果未指定,PMU 預設會監控所有遠端 socket。/sys/bus/event_source/devices/nvidia_cnvlink_pmu_<socket-id>/format/rem_socket 顯示了可以在“rem_socket”引數中設定的有效位。
PMU 無法區分遠端流量發起者,因此它不提供過濾器來選擇要監控的流量源。它報告來自遠端 GPU 和 PCIE 裝置的組合流量。
使用示例
統計從遠端 socket 1、2 和 3 到 socket 0 的流量的事件 ID 0x0
perf stat -a -e nvidia_cnvlink_pmu_0/event=0x0,rem_socket=0xE/
統計從遠端 socket 0、2 和 3 到 socket 1 的流量的事件 ID 0x0
perf stat -a -e nvidia_cnvlink_pmu_1/event=0x0,rem_socket=0xD/
統計從遠端 socket 0、1 和 3 到 socket 2 的流量的事件 ID 0x0
perf stat -a -e nvidia_cnvlink_pmu_2/event=0x0,rem_socket=0xB/
統計從遠端 socket 0、1 和 2 到 socket 3 的流量的事件 ID 0x0
perf stat -a -e nvidia_cnvlink_pmu_3/event=0x0,rem_socket=0x7/
PCIE PMU¶
PCIE PMU 監控從 PCIE 根埠到本地/遠端記憶體的所有讀/寫流量。有關 PMU 流量覆蓋範圍的更多資訊,請參閱流量覆蓋範圍。
此 PMU 裝置的事件和配置選項在 sysfs 中描述,請參閱 /sys/bus/event_source/devices/nvidia_pcie_pmu_<socket-id>。
每個 SoC socket 可以支援多個根埠。使用者可以使用“root_port”點陣圖引數選擇要監控的埠,即“root_port=0xF”對應根埠 0 到 3。如果未指定,PMU 預設會監控所有根埠。/sys/bus/event_source/devices/nvidia_pcie_pmu_<socket-id>/format/root_port 顯示了可以在“root_port”引數中設定的有效位。
使用示例
統計來自 socket 0 的根埠 0 和 1 的事件 ID 0x0
perf stat -a -e nvidia_pcie_pmu_0/event=0x0,root_port=0x3/
統計來自 socket 1 的根埠 0 和 1 的事件 ID 0x0
perf stat -a -e nvidia_pcie_pmu_1/event=0x0,root_port=0x3/
流量覆蓋範圍¶
PMU 流量覆蓋範圍可能因晶片配置而異
NVIDIA Grace Hopper 超級晶片:Hopper GPU 連線到 Grace SoC。
包含兩個 Grace SoC 的配置示例
********************************* ********************************* * SOCKET-A * * SOCKET-B * * * * * * :::::::: * * :::::::: * * : PCIE : * * : PCIE : * * :::::::: * * :::::::: * * | * * | * * | * * | * * ::::::: ::::::::: * * ::::::::: ::::::: * * : : : : * * : : : : * * : GPU :<--NVLink-->: Grace :<---CNVLink--->: Grace :<--NVLink-->: GPU : * * : : C2C : SoC : * * : SoC : C2C : : * * ::::::: ::::::::: * * ::::::::: ::::::: * * | | * * | | * * | | * * | | * * &&&&&&&& &&&&&&&& * * &&&&&&&& &&&&&&&& * * & GMEM & & CMEM & * * & CMEM & & GMEM & * * &&&&&&&& &&&&&&&& * * &&&&&&&& &&&&&&&& * * * * * ********************************* ********************************* GMEM = GPU Memory (e.g. HBM) CMEM = CPU Memory (e.g. LPDDR5X)
下表包含 socket-A 中 Grace SoC PMU 的流量覆蓋範圍+--------------+-------+-----------+-----------+-----+----------+----------+ | | Source | + +-------+-----------+-----------+-----+----------+----------+ | Destination | |GPU ATS |GPU Not-ATS| | Socket-B | Socket-B | | |PCI R/W|Translated,|Translated | CPU | CPU/PCIE1| GPU/PCIE2| | | |EGM | | | | | +==============+=======+===========+===========+=====+==========+==========+ | Local | PCIE |NVLink-C2C0|NVLink-C2C1| SCF | SCF PMU | CNVLink | | SYSRAM/CMEM | PMU |PMU |PMU | PMU | | PMU | +--------------+-------+-----------+-----------+-----+----------+----------+ | Local GMEM | PCIE | N/A |NVLink-C2C1| SCF | SCF PMU | CNVLink | | | PMU | |PMU | PMU | | PMU | +--------------+-------+-----------+-----------+-----+----------+----------+ | Remote | PCIE |NVLink-C2C0|NVLink-C2C1| SCF | | | | SYSRAM/CMEM | PMU |PMU |PMU | PMU | N/A | N/A | | over CNVLink | | | | | | | +--------------+-------+-----------+-----------+-----+----------+----------+ | Remote GMEM | PCIE |NVLink-C2C0|NVLink-C2C1| SCF | | | | over CNVLink | PMU |PMU |PMU | PMU | N/A | N/A | +--------------+-------+-----------+-----------+-----+----------+----------+ PCIE1 traffic represents strongly ordered (SO) writes. PCIE2 traffic represents reads and relaxed ordered (RO) writes.
NVIDIA Grace CPU 超級晶片:兩個 Grace CPU SoC 連線。
包含兩個 Grace SoC 的配置示例
******************* ******************* * SOCKET-A * * SOCKET-B * * * * * * :::::::: * * :::::::: * * : PCIE : * * : PCIE : * * :::::::: * * :::::::: * * | * * | * * | * * | * * ::::::::: * * ::::::::: * * : : * * : : * * : Grace :<--------NVLink------->: Grace : * * : SoC : * C2C * : SoC : * * ::::::::: * * ::::::::: * * | * * | * * | * * | * * &&&&&&&& * * &&&&&&&& * * & CMEM & * * & CMEM & * * &&&&&&&& * * &&&&&&&& * * * * * ******************* ******************* GMEM = GPU Memory (e.g. HBM) CMEM = CPU Memory (e.g. LPDDR5X)
下表包含 socket-A 中 Grace SoC PMU 的流量覆蓋範圍+-----------------+-----------+---------+----------+-------------+ | | Source | + +-----------+---------+----------+-------------+ | Destination | | | Socket-B | Socket-B | | | PCI R/W | CPU | CPU/PCIE1| PCIE2 | | | | | | | +=================+===========+=========+==========+=============+ | Local | PCIE PMU | SCF PMU | SCF PMU | NVLink-C2C0 | | SYSRAM/CMEM | | | | PMU | +-----------------+-----------+---------+----------+-------------+ | Remote | | | | | | SYSRAM/CMEM | PCIE PMU | SCF PMU | N/A | N/A | | over NVLink-C2C | | | | | +-----------------+-----------+---------+----------+-------------+ PCIE1 traffic represents strongly ordered (SO) writes. PCIE2 traffic represents reads and relaxed ordered (RO) writes.