AMD Zen2(Rome)处理器DRAM流量追踪及工具使用问题咨询
问题描述
我需要追踪AMD EPYC处理器(家族:0x17、型号:0x31)中每个Unified Memory Controller(UMC)的读写访问次数。使用AMDuProfPcm工具的-m memory选项时,可获取8个内存通道(Mem Ch-A至H)的单通道读写带宽,但这是双路系统,我认为这些通道仅对应其中单路的内存通道。
AMDuProfPcm中的UMC事件
查看AMDuProfPcm的配置文件后,找到以下UMC相关的事件条目:
# cat AMDuProf_Linux_x64_4.2.850/bin/Data/Events/0x17_0x3.xml | grep Umc <event value="0x0000000000403007" name="DFCS0Umc0ReqRd"/> <event value="0x0000000000400807" name="DFCS0Umc0ReqWr"/> <event value="0x0000000000403047" name="DFCS1Umc1ReqRd"/> <event value="0x0000000000400847" name="DFCS1Umc1ReqWr"/> <event value="0x0000000000403087" name="DFCS2Umc2ReqRd"/> <event value="0x0000000000400887" name="DFCS2Umc2ReqWr"/> <event value="0x00000000004030C7" name="DFCS3Umc3ReqRd"/> <event value="0x00000000004008C7" name="DFCS3Umc3ReqWr"/> <event value="0x0000000100403007" name="DFCS4Umc4ReqRd"/> <event value="0x0000000100400807" name="DFCS4Umc4ReqWr"/> <event value="0x0000000100403047" name="DFCS5Umc5ReqRd"/> <event value="0x0000000100400847" name="DFCS5Umc5ReqWr"/> <event value="0x0000000100403087" name="DFCS6Umc6ReqRd"/> <event value="0x0000000100400887" name="DFCS6Umc6ReqWr"/> <event value="0x00000001004030C7" name="DFCS7Umc7ReqRd"/> <event value="0x00000001004008C7" name="DFCS7Umc7ReqWr"/>
但我无法在AMD PPR文档中找到这些特定事件,仅找到最接近的NPS1节点(die)上所有通道的合计DRAM字节数计算公式:
(DfEvent[0x0000000000403807] + DfEvent[0x0000000000403847] + DfEvent[0x0000000000403887] + DfEvent[0x00000000004038C7] + DfEvent[0x0000000100403807] + DfEvent[0x0000000100403847] + DfEvent[0x0000000100403887] + DfEvent[0x00000001004038C7]) * 64B
perf工具的异常问题
执行perf list命令能看到相关事件:
# perf list | grep dram ... nps1_die_to_dram
但使用perf stat调用该事件时直接报错:
# sudo perf stat -B -e nps1_die_to_dram ls event syntax error: 'nps1_die_to_dram' \___ Bad event name
尝试用-M选项调用同样报错:
# sudo perf stat -M nps1_die_to_dram -a ls event syntax error: 'dram_channel_data_controller_4/metric-id=dram_channel_data_controller_4/,dram_channel_data_controller_1/metric-id=dram_channel_data_controller_1/,dram_channel_data_controller_6/metric-id=dram_channel_data_controller_6/,dram_channel_data_controller_3/metric-id=dram_channel_data_controller_3/,dram_chan..' \___ Bad event or PMU Unable to find PMU or event on a PMU of 'dram_channel_data_controller_4' Initial error: event syntax error: 'dram_channel_data_controller_4/metric-id=dram_channel_data_controller_4/,dram_channel_data_controller_1/metric-id=dram_channel_data_controller_1/,dram_channel_data_controller_6/metric-id=dram_channel_data_controller_6/,dram_channel_data_controller_3/metric-id=dram_channel_data_controller_3/,dram_chan..' \___ Cannot find PMU `dram_channel_data_controller_4'. Missing kernel support?
疑问
- 为什么perf工具无法正常调用
nps1_die_to_dram事件? - 有没有办法确定AMDuProfPcm是如何计算各内存通道带宽的?
内容的提问来源于stack exchange,提问作者smz
相关产品推荐
相关产品推荐

