对于较旧的内核 INST_RETIRED.ANY (以及https://perfmon-events.intel.com/ahybrid.htm中记录的许多其他计数器)用作性能计数器。
我现在使用 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
这是预期的行为吗?
至少当我运行
sudo perf list
并寻找时inst_retired
,我发现inst_retired.any
,它符合其他事件的大写约定。因此,这些很可能在工具中被重命名。我可以跑并得到
在这台英特尔(不是 gen12/13)机器上。
INST_RETIRED.ANY 返回解析错误的原因是 perf 的版本与 Linux 的版本不匹配,而它必须匹配。
我认为机器设置正确的人给了我这台机器,所以我没有费心去检查版本是否不匹配。幸好有评论者建议检查perf的版本,结果解决了问题