| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- =========================================================
- NVIDIA Tegra SoC Uncore Performance Monitoring Unit (PMU)
- =========================================================
- The NVIDIA Tegra SoC includes various system PMUs to measure key performance
- metrics like memory bandwidth, latency, and utilization:
- * Scalable Coherency Fabric (SCF)
- * NVLink-C2C0
- * NVLink-C2C1
- * CNVLink
- * PCIE
- PMU Driver
- ----------
- The PMUs in this document are based on ARM CoreSight PMU Architecture as
- described in document: ARM IHI 0091. Since this is a standard architecture, the
- PMUs are managed by a common driver "arm-cs-arch-pmu". This driver describes
- the available events and configuration of each PMU in sysfs. Please see the
- sections below to get the sysfs path of each PMU. Like other uncore PMU drivers,
- the driver provides "cpumask" sysfs attribute to show the CPU id used to handle
- the PMU event. There is also "associated_cpus" sysfs attribute, which contains a
- list of CPUs associated with the PMU instance.
- .. _SCF_PMU_Section:
- SCF PMU
- -------
- The SCF PMU monitors system level cache events, CPU traffic, and
- strongly-ordered (SO) PCIE write traffic to local/remote memory. Please see
- :ref:`NVIDIA_Uncore_PMU_Traffic_Coverage_Section` for more info about the PMU
- traffic coverage.
- The events and configuration options of this PMU device are described in sysfs,
- see /sys/bus/event_source/devices/nvidia_scf_pmu_<socket-id>.
- Example usage:
- * Count event id 0x0 in socket 0::
- perf stat -a -e nvidia_scf_pmu_0/event=0x0/
- * Count event id 0x0 in socket 1::
- perf stat -a -e nvidia_scf_pmu_1/event=0x0/
- NVLink-C2C0 PMU
- --------------------
- The NVLink-C2C0 PMU monitors incoming traffic from a GPU/CPU connected with
- NVLink-C2C (Chip-2-Chip) interconnect. The type of traffic captured by this PMU
- varies dependent on the chip configuration:
- * NVIDIA Grace Hopper Superchip: Hopper GPU is connected with Grace SoC.
- In this config, the PMU captures GPU ATS translated or EGM traffic from the GPU.
- * NVIDIA Grace CPU Superchip: two Grace CPU SoCs are connected.
- In this config, the PMU captures read and relaxed ordered (RO) writes from
- PCIE device of the remote SoC.
- Please see :ref:`NVIDIA_Uncore_PMU_Traffic_Coverage_Section` for more info about
- the PMU traffic coverage.
- The events and configuration options of this PMU device are described in sysfs,
- see /sys/bus/event_source/devices/nvidia_nvlink_c2c0_pmu_<socket-id>.
- Example usage:
- * Count event id 0x0 from the GPU/CPU connected with socket 0::
- perf stat -a -e nvidia_nvlink_c2c0_pmu_0/event=0x0/
- * Count event id 0x0 from the GPU/CPU connected with socket 1::
- perf stat -a -e nvidia_nvlink_c2c0_pmu_1/event=0x0/
- * Count event id 0x0 from the GPU/CPU connected with socket 2::
- perf stat -a -e nvidia_nvlink_c2c0_pmu_2/event=0x0/
- * Count event id 0x0 from the GPU/CPU connected with socket 3::
- perf stat -a -e nvidia_nvlink_c2c0_pmu_3/event=0x0/
- The NVLink-C2C has two ports that can be connected to one GPU (occupying both
- ports) or to two GPUs (one GPU per port). The user can use "port" bitmap
- parameter to select the port(s) to monitor. Each bit represents the port number,
- e.g. "port=0x1" corresponds to port 0 and "port=0x3" is for port 0 and 1. The
- PMU will monitor both ports by default if not specified.
- Example for port filtering:
- * Count event id 0x0 from the GPU connected with socket 0 on port 0::
- perf stat -a -e nvidia_nvlink_c2c0_pmu_0/event=0x0,port=0x1/
- * Count event id 0x0 from the GPUs connected with socket 0 on port 0 and port 1::
- perf stat -a -e nvidia_nvlink_c2c0_pmu_0/event=0x0,port=0x3/
- NVLink-C2C1 PMU
- -------------------
- The NVLink-C2C1 PMU monitors incoming traffic from a GPU connected with
- NVLink-C2C (Chip-2-Chip) interconnect. This PMU captures untranslated GPU
- traffic, in contrast with NvLink-C2C0 PMU that captures ATS translated traffic.
- Please see :ref:`NVIDIA_Uncore_PMU_Traffic_Coverage_Section` for more info about
- the PMU traffic coverage.
- The events and configuration options of this PMU device are described in sysfs,
- see /sys/bus/event_source/devices/nvidia_nvlink_c2c1_pmu_<socket-id>.
- Example usage:
- * Count event id 0x0 from the GPU connected with socket 0::
- perf stat -a -e nvidia_nvlink_c2c1_pmu_0/event=0x0/
- * Count event id 0x0 from the GPU connected with socket 1::
- perf stat -a -e nvidia_nvlink_c2c1_pmu_1/event=0x0/
- * Count event id 0x0 from the GPU connected with socket 2::
- perf stat -a -e nvidia_nvlink_c2c1_pmu_2/event=0x0/
- * Count event id 0x0 from the GPU connected with socket 3::
- perf stat -a -e nvidia_nvlink_c2c1_pmu_3/event=0x0/
- The NVLink-C2C has two ports that can be connected to one GPU (occupying both
- ports) or to two GPUs (one GPU per port). The user can use "port" bitmap
- parameter to select the port(s) to monitor. Each bit represents the port number,
- e.g. "port=0x1" corresponds to port 0 and "port=0x3" is for port 0 and 1. The
- PMU will monitor both ports by default if not specified.
- Example for port filtering:
- * Count event id 0x0 from the GPU connected with socket 0 on port 0::
- perf stat -a -e nvidia_nvlink_c2c1_pmu_0/event=0x0,port=0x1/
- * Count event id 0x0 from the GPUs connected with socket 0 on port 0 and port 1::
- perf stat -a -e nvidia_nvlink_c2c1_pmu_0/event=0x0,port=0x3/
- CNVLink PMU
- ---------------
- The CNVLink PMU monitors traffic from GPU and PCIE device on remote sockets
- to local memory. For PCIE traffic, this PMU captures read and relaxed ordered
- (RO) write traffic. Please see :ref:`NVIDIA_Uncore_PMU_Traffic_Coverage_Section`
- for more info about the PMU traffic coverage.
- The events and configuration options of this PMU device are described in sysfs,
- see /sys/bus/event_source/devices/nvidia_cnvlink_pmu_<socket-id>.
- Each SoC socket can be connected to one or more sockets via CNVLink. The user can
- use "rem_socket" bitmap parameter to select the remote socket(s) to monitor.
- Each bit represents the socket number, e.g. "rem_socket=0xE" corresponds to
- socket 1 to 3. The PMU will monitor all remote sockets by default if not
- specified.
- /sys/bus/event_source/devices/nvidia_cnvlink_pmu_<socket-id>/format/rem_socket
- shows the valid bits that can be set in the "rem_socket" parameter.
- The PMU can not distinguish the remote traffic initiator, therefore it does not
- provide filter to select the traffic source to monitor. It reports combined
- traffic from remote GPU and PCIE devices.
- Example usage:
- * Count event id 0x0 for the traffic from remote socket 1, 2, and 3 to socket 0::
- perf stat -a -e nvidia_cnvlink_pmu_0/event=0x0,rem_socket=0xE/
- * Count event id 0x0 for the traffic from remote socket 0, 2, and 3 to socket 1::
- perf stat -a -e nvidia_cnvlink_pmu_1/event=0x0,rem_socket=0xD/
- * Count event id 0x0 for the traffic from remote socket 0, 1, and 3 to socket 2::
- perf stat -a -e nvidia_cnvlink_pmu_2/event=0x0,rem_socket=0xB/
- * Count event id 0x0 for the traffic from remote socket 0, 1, and 2 to socket 3::
- perf stat -a -e nvidia_cnvlink_pmu_3/event=0x0,rem_socket=0x7/
- PCIE PMU
- ------------
- The PCIE PMU monitors all read/write traffic from PCIE root ports to
- local/remote memory. Please see :ref:`NVIDIA_Uncore_PMU_Traffic_Coverage_Section`
- for more info about the PMU traffic coverage.
- The events and configuration options of this PMU device are described in sysfs,
- see /sys/bus/event_source/devices/nvidia_pcie_pmu_<socket-id>.
- Each SoC socket can support multiple root ports. The user can use
- "root_port" bitmap parameter to select the port(s) to monitor, i.e.
- "root_port=0xF" corresponds to root port 0 to 3. The PMU will monitor all root
- ports by default if not specified.
- /sys/bus/event_source/devices/nvidia_pcie_pmu_<socket-id>/format/root_port
- shows the valid bits that can be set in the "root_port" parameter.
- Example usage:
- * Count event id 0x0 from root port 0 and 1 of socket 0::
- perf stat -a -e nvidia_pcie_pmu_0/event=0x0,root_port=0x3/
- * Count event id 0x0 from root port 0 and 1 of socket 1::
- perf stat -a -e nvidia_pcie_pmu_1/event=0x0,root_port=0x3/
- .. _NVIDIA_Uncore_PMU_Traffic_Coverage_Section:
- Traffic Coverage
- ----------------
- The PMU traffic coverage may vary dependent on the chip configuration:
- * **NVIDIA Grace Hopper Superchip**: Hopper GPU is connected with Grace SoC.
- Example configuration with two Grace SoCs::
- ********************************* *********************************
- * 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)
- |
- | Following table contains traffic coverage of Grace SoC PMU in socket-A:
- ::
- +--------------+-------+-----------+-----------+-----+----------+----------+
- | | 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 Superchip**: two Grace CPU SoCs are connected.
- Example configuration with two Grace SoCs::
- ******************* *******************
- * 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)
- |
- | Following table contains traffic coverage of Grace SoC PMU in socket-A:
- ::
- +-----------------+-----------+---------+----------+-------------+
- | | 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.
|