Cavium ThunderX2 SoC 性能监控单元 (PMU UNCORE)¶
ThunderX2 SoC PMU 由独立的、系统范围的、每个插槽的 PMU 组成,例如三级缓存 (L3C)、DDR4 内存控制器 (DMC) 和 Cavium 一致性处理器互连 (CCPI2)。
DMC 有 8 个交错通道,L3C 有 16 个交错 tile。事件计数针对默认通道(即通道 0)进行,并按比例分配到通道/tile 的总数。
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