测量 AMD Zen2 CPU 上的 LLC/L3 缓存缺失率

问题描述 投票:0回答:1

我有与这个相关的问题。

我想(以编程方式)测量 AMD EPYC 7742 CPU (Zen2) 上的 L3 命中(访问)和未命中。我在 Ubuntu Server 20.04.2 LTS 上运行 Linux Kernel 5.4.0-66-generic。根据上面链接的问题,事件 rFF04 (L3LookupState) 和 r0106 (L3CombClstrState) 应分别代表 L3 访问和未命中。此外,内核 5.4 应该支持这些事件。

但是,当用 perf 测量它时,我遇到了问题。与上面链接的问题类似,如果我运行

numactl -C 0 -m 0 perf stat -e instructions,cycles,r0106,rFF04 ./benchmark
,我只会测量 0 个值。如果我尝试使用
numactl -C 0 -m 0 perf stat -e instructions,cycles,amd_l3/r8001/,amd_l3/r0106/
,perf 会抱怨“未知术语”。如果我使用 perf 事件名称,即这些事件的
numactl -C 0 -m 0 perf stat -e instructions,cycles,l3_request_g1.caching_l3_cache_accesses,  l3_comb_clstr_state.request_miss
perf 输出
<not supported>

此外,我实际上想使用 perf 的 C API 来测量这一点。目前,我发送一个类型为

perf_event_attr
PERF_TYPE_RAW
设置为
config
0x8001
。如何将
amd_l3
PMU 内容放入我的
perf_event_attr
对象中?否则,它相当于
numactl -C 0 -m 0 perf stat -e instructions,cycles,r0106,rFF04 ./benchmark
,它正在测量未定义的值。

非常感谢您的帮助。

linux x86 amd perf amd-processor
1个回答
1
投票

简短回答:尝试

-e rFF0F00000040FF04
参数,该参数显示在您的 CPU PPR 文档中。

详细

也许我可以帮助您解决第第3段中提到的第一个问题。第四段中所说的第二个,我不能。对不起。

由于您的CPU是'Family 23 Model 49',那么我参考了'17h model 31h'amd PPR doc。它说使用

L3Event[0xFF0F00000040FF04]
进行“L3 访问”(
0xFF0F00000040FF04
是 64 位,与 amd 文档显示的
L3 Performance Event Select
宽度相同)。此外,
man perf-list
还显示 AMD 使用这种具有“32-35”位的格式。虽然在 PPR 文档中,
L3PMCx04
没有太多信息,但该文档在
L3 Performance Event Select
中提供了一些有用的信息。

我使用我的cpu ryzen 7 4800h,它是17h_60h系列Renoir处理器(它也是zen2。从这两个源代码one列出了AMD CPU和two的一些编码,zen2的配置应该差不多相同。)没有

amd_l3
支持,这里我使用
ls_dc_accesses
作为表示,
729
是我的 cpu 系列
amd doc
All DC Accesses 的代码,其中
PMCx029
代表
EventCode
8个对应位代表UMask。也可以在上面的代码two中找到(在你的17h_31h家族PPR doc p182,号码是
0x430729
):

$ ls /sys/devices/*/format | grep amd_l
$ perf list | grep ls_dc_accesses -A 1
  ls_dc_accesses
       [Number of accesses to the dcache for load/store references]
$ perf stat -e r729 ls          
...
 Performance counter stats for 'ls':

         1,097,092      r729                       
$ perf stat -e ls_dc_accesses ls
...
 Performance counter stats for 'ls':

           974,666      ls_dc_accesses   

而且并不是每个人都有一个 epyc cpu,因此可能不方便查看您的问题出在哪里。如果可能的话也许您可以提供更有价值的信息。

希望这可以帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.