Cavium ThunderX2 SoC 性能监控单元 (PMU UNCORE)

ThunderX2 SoC PMU 由独立的、系统范围的、每插槽 PMU 组成,例如三级缓存 (L3C)、DDR4 内存控制器 (DMC) 和 Cavium 一致性处理器互连 (CCPI2)。

DMC 具有 8 个交错通道,L3C 具有 16 个交错瓦片。事件针对默认通道(即通道 0)进行计数,并按比例分配到通道/瓦片总数。

DMC 和 L3C 支持最多 4 个计数器,而 CCPI2 支持最多 8 个计数器。计数器可以独立编程以用于不同的事件,并且可以单独启动和停止。所有计数器均不支持溢出中断。DMC 和 L3C 计数器为 32 位,每 2 秒读取一次。CCPI2 计数器为 64 位,在正常操作下假定不会溢出。

PMU UNCORE (perf) 驱动程序

thunderx2_pmu 驱动程序为 DMC 和 L3C 设备注册了每个插槽的 perf PMU。每个 PMU 可用于同时计数多达 4 个 (DMC/L3C) 或多达 8 个 (CCPI2) 事件。PMU 在 sysfs 下提供了可用事件和配置选项的描述,参见 /sys/bus/event_source/devices/uncore_<l3c_S/dmc_S/ccpi2_S/>; S 是插槽 ID。

该驱动程序不支持采样,因此“perf record”将无法工作。也不支持按任务的 perf 会话。

示例

# 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