-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Documentation: perf: Add documentation for ThunderX2 PMU uncore driver
The SoC has PMU support in its L3 cache controller (L3C) and in the DDR4 Memory Controller (DMC). Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> [will: minor spelling and format fixes, dropped events list] Signed-off-by: Will Deacon <will.deacon@arm.com>
- Loading branch information
Kulkarni, Ganapatrao
authored and
Will Deacon
committed
Dec 6, 2018
1 parent
754a58d
commit d6310a3
Showing
1 changed file
with
41 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
Cavium ThunderX2 SoC Performance Monitoring Unit (PMU UNCORE) | ||
============================================================= | ||
|
||
The ThunderX2 SoC PMU consists of independent, system-wide, per-socket | ||
PMUs such as the Level 3 Cache (L3C) and DDR4 Memory Controller (DMC). | ||
|
||
The DMC has 8 interleaved channels and the L3C has 16 interleaved tiles. | ||
Events are counted for the default channel (i.e. channel 0) and prorated | ||
to the total number of channels/tiles. | ||
|
||
The DMC and L3C support up to 4 counters. Counters are independently | ||
programmable and can be started and stopped individually. Each counter | ||
can be set to a different event. Counters are 32-bit and do not support | ||
an overflow interrupt; they are read every 2 seconds. | ||
|
||
PMU UNCORE (perf) driver: | ||
|
||
The thunderx2_pmu driver registers per-socket perf PMUs for the DMC and | ||
L3C devices. Each PMU can be used to count up to 4 events | ||
simultaneously. The PMUs provide a description of their available events | ||
and configuration options under sysfs, see | ||
/sys/devices/uncore_<l3c_S/dmc_S/>; S is the socket id. | ||
|
||
The driver does not support sampling, therefore "perf record" will not | ||
work. Per-task perf sessions are also not supported. | ||
|
||
Examples: | ||
|
||
# perf stat -a -e uncore_dmc_0/cnt_cycles/ sleep 1 | ||
|
||
# perf stat -a -e \ | ||
uncore_dmc_0/cnt_cycles/,\ | ||
uncore_dmc_0/data_transfers/,\ | ||
uncore_dmc_0/read_txns/,\ | ||
uncore_dmc_0/write_txns/ sleep 1 | ||
|
||
# perf stat -a -e \ | ||
uncore_l3c_0/read_request/,\ | ||
uncore_l3c_0/read_hit/,\ | ||
uncore_l3c_0/inv_request/,\ | ||
uncore_l3c_0/inv_hit/ sleep 1 |