NVIDIA Tegra SoC 非核性能监控单元 (PMU)¶
NVIDIA Tegra SoC 包含各种系统 PMU,用于测量关键性能指标,如内存带宽、延迟和利用率。
可扩展一致性结构 (SCF)
NVLink-C2C0
NVLink-C2C1
CNVLink
PCIE
PMU 驱动程序¶
本文档中的 PMU 基于 ARM CoreSight PMU 架构,如文档 ARM IHI 0091 中所述。由于这是一个标准架构,因此 PMU 由通用驱动程序 “arm-cs-arch-pmu” 管理。此驱动程序描述了 sysfs 中每个 PMU 的可用事件和配置。请参阅下面的部分以获取每个 PMU 的 sysfs 路径。与其他非核 PMU 驱动程序一样,该驱动程序提供了 “cpumask” sysfs 属性来显示用于处理 PMU 事件的 CPU ID。还有一个 “associated_cpus” sysfs 属性,其中包含与 PMU 实例关联的 CPU 列表。
SCF PMU¶
SCF PMU 监控系统级缓存事件、CPU 流量以及到本地/远程内存的强排序 (SO) PCIE 写入流量。有关 PMU 流量覆盖的更多信息,请参阅 流量覆盖。
此 PMU 设备的事件和配置选项在 sysfs 中描述,请参阅 /sys/bus/event_sources/devices/nvidia_scf_pmu_<socket-id>。
使用示例
在插槽 0 中计数事件 ID 0x0
perf stat -a -e nvidia_scf_pmu_0/event=0x0/
在插槽 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_sources/devices/nvidia_nvlink_c2c0_pmu_<socket-id>。
使用示例
从与插槽 0 连接的 GPU/CPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_0/event=0x0/
从与插槽 1 连接的 GPU/CPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_1/event=0x0/
从与插槽 2 连接的 GPU/CPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_2/event=0x0/
从与插槽 3 连接的 GPU/CPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c0_pmu_3/event=0x0/
NVLink-C2C1 PMU¶
NVLink-C2C1 PMU 监控来自通过 NVLink-C2C (芯片到芯片) 互连连接的 GPU 的传入流量。此 PMU 捕获未转换的 GPU 流量,与捕获 ATS 转换流量的 NvLink-C2C0 PMU 形成对比。有关 PMU 流量覆盖的更多信息,请参阅 流量覆盖。
此 PMU 设备的事件和配置选项在 sysfs 中描述,请参阅 /sys/bus/event_sources/devices/nvidia_nvlink_c2c1_pmu_<socket-id>。
使用示例
从与插槽 0 连接的 GPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_0/event=0x0/
从与插槽 1 连接的 GPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_1/event=0x0/
从与插槽 2 连接的 GPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_2/event=0x0/
从与插槽 3 连接的 GPU 计数事件 ID 0x0
perf stat -a -e nvidia_nvlink_c2c1_pmu_3/event=0x0/
CNVLink PMU¶
CNVLink PMU 监控从远程插槽上的 GPU 和 PCIE 设备到本地内存的流量。对于 PCIE 流量,此 PMU 捕获读取和宽松排序 (RO) 写入流量。有关 PMU 流量覆盖的更多信息,请参阅 流量覆盖。
此 PMU 设备的事件和配置选项在 sysfs 中描述,请参阅 /sys/bus/event_sources/devices/nvidia_cnvlink_pmu_<socket-id>。
每个 SoC 插槽可以通过 CNVLink 连接到一个或多个插槽。用户可以使用 “rem_socket” 位图参数选择要监控的远程插槽。每一位代表插槽号,例如 “rem_socket=0xE” 对应于插槽 1 到 3。/sys/bus/event_sources/devices/nvidia_cnvlink_pmu_<socket-id>/format/rem_socket 显示可以在 “rem_socket” 参数中设置的有效位。
PMU 无法区分远程流量发起者,因此它不提供过滤器来选择要监控的流量源。它报告来自远程 GPU 和 PCIE 设备的组合流量。
使用示例
计数从远程插槽 1、2 和 3 到插槽 0 的流量的事件 ID 0x0
perf stat -a -e nvidia_cnvlink_pmu_0/event=0x0,rem_socket=0xE/
计数从远程插槽 0、2 和 3 到插槽 1 的流量的事件 ID 0x0
perf stat -a -e nvidia_cnvlink_pmu_1/event=0x0,rem_socket=0xD/
计数从远程插槽 0、1 和 3 到插槽 2 的流量的事件 ID 0x0
perf stat -a -e nvidia_cnvlink_pmu_2/event=0x0,rem_socket=0xB/
计数从远程插槽 0、1 和 2 到插槽 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_sources/devices/nvidia_pcie_pmu_<socket-id>。
每个 SoC 插槽可以支持多个根端口。用户可以使用 “root_port” 位图参数选择要监控的端口,即 “root_port=0xF” 对应于根端口 0 到 3。/sys/bus/event_sources/devices/nvidia_pcie_pmu_<socket-id>/format/root_port 显示可以在 “root_port” 参数中设置的有效位。
使用示例
计数来自插槽 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.