如何在旧内核上统计Offcore PMU事件OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP?
如何在Cascade Lake服务器上收集
OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP事件 我需要在Cascade Lake服务器上收集OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP事件,使用的CPU为Intel(R) Xeon(R) Gold 6230R(内核版本4.18.0),也试过Intel(R) Xeon(R) Gold 5218搭配5.14.0内核,结果无差异。我的perf版本为3.10.0-693.5.2.el7.x86_64.debug。
尝试1:直接使用perf收集
该事件在5.14内核的perf事件定义中得到支持,但我的旧内核无法让perf直接识别这个Offcore事件。执行命令perf list | grep OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP无输出。
更新:perf将服务器识别为Skylake,但即使是Skylake的perf事件定义里的相关事件也无法输出:
$ cat /sys/devices/cpu/caps/pmu_name skylake # perf list | grep offcore [empty] # perf list | grep rfo [empty]
尝试2:使用PCM-raw收集数据
我按照PCM raw模式教程操作,但收集到的数据全为0:
# ./emon -C OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP --dry-run -m Event Set 0 OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP (PerfEvtSel0 (0x186) = 0x00000000004301b7) CC=ALL PC=0x0 UMASK=0x1 E=0x1 EDGE=0 INT=0x0 INV=0x0 CMASK=0x0 AMT=0x0 # pcm-raw -e core/config=0x00000000004301b7,name=OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP ,,,SKT0CORE0,SKT0CORE1,SKT0CORE2,... Date,Time,ms,OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP,OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP,OCR.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP,... 2023-10-17,11:49:55.483,1001,0,0,0,... (all zero)
推测原因可能是PCM-raw不支持Offcore事件的收集,其当前支持的PMU包括:core、m3upi、upi(ll)/qpi(ll)、imc、m2m、pcu、cha/cbo、iio、ubox。
疑问:是否存在可行的方法来收集对应的计数器?
更新尝试3: 我尝试将内核升级到5.14版本,结果与尝试1一致。
内容的提问来源于stack exchange,提问作者Frontier_Setter
相关产品推荐
相关产品推荐

