有没有办法在 Linux 中查看 CPU opcache 参数信息,例如大小或关联性?

有没有办法在 Linux 中查看 CPU opcache 参数信息,例如大小或关联性?

我最近用perf它来对程序进行基准测试。它有一个事件 de_dis_uops_from_decoder.opcache_dispatched显示“从 OpCache 调度的操作数”。(这里是相关源代码)。然后我想获取 L2 缓存在 op 缓存中使用的缓存行大小之类的信息。维基芯片显示 zen2(我使用 ryzen 7 4800h cpu)具有有关 op 缓存的“8 Op 行大小”和“每个条目包含最多 8 个连续指令”(wikichip 引用的 amd 专利文件也说明了 op 缓存的实现方式)。

我在网上搜索后知道如何获取 L1~L3 缓存信息。

我想获取更多与我的 CPU 相关的信息,而不是上述 wikichip 链接提供的信息。那么有没有一个 Linux 工具可以查看操作缓存如果可以的话,如何方便地获取?或者如果可以的话,如何使用代码获取?

以下是如何查看 L1~L3 缓存信息,其中包括“集合”,“COHERENCY-SIZE”(即缓存行大小)等:

$ lscpu --cache
NAME ONE-SIZE ALL-SIZE WAYS TYPE        LEVEL SETS PHY-LINE COHERENCY-SIZE
L1d       32K     256K    8 Data            1   64        1             64
L1i       32K     256K    8 Instruction     1   64        1             64
L2       512K       4M    8 Unified         2 1024        1             64
L3         4M       8M   16 Unified         3 4096        1             64

相关内容