INST_RETIRED.ANY 不再作为 Linux 6.7 上 perf 的性能计数器

INST_RETIRED.ANY 不再作为 Linux 6.7 上 perf 的性能计数器

对于较旧的内核 INST_RETIRED.ANY (以及中记录的许多其他计数器)https://perfmon-events.intel.com/ahybrid.htm)作为 perf 的计数器。

我现在使用 perf 和运行在 Sapphire Rapids {Golden Cove} 处理器上的 6.7 内核。

当我执行以下操作时

 perf stat -e INST_RETIRED.ANY,cycles sleep 2

我明白了

event syntax error: 'INST_RETIRED.ANY,cycles'
                     \___ parser error

这是预期的行为吗?

答案1

至少当我运行sudo perf list并寻找时inst_retired,我发现inst_retired.any,它符合其他事件的大写约定。因此,这些很可能在工具中被重命名。我可以跑

perf stat -e inst_retired.any,cycles sleep 2

并得到


 Performance counter stats for 'sleep 2':

         1.600.192      inst_retired.any
         2.142.871      cycles

       2,001396579 seconds time elapsed

       0,000000000 seconds user
       0,001231000 seconds sys


在这台英特尔(不是 gen12/13)机器上。

答案2

INST_RETIRED.ANY 返回解析错误的原因是 perf 的版本与 Linux 的版本不匹配,而它必须匹配。

我认为机器设置正确的人给了我这台机器,所以我没有费心去检查版本是否不匹配。幸好有评论者建议检查perf的版本,结果解决了问题

相关内容