简单但复杂的问题:
使用什么计数器来获取性能工具来测量挂钟时间?
作为基线,我认为在分析代码时需要测量的第一件事就是挂钟时间,以初步了解代码大部分时间在哪里。我不在乎它是否是 IO 或带宽限制或其他我只想知道它慢的地方。
听起来很简单的要求,但现代 CPU 为高效工作而采取的所有技巧(如频率缩放等)以及 perf 中可用的大量不同(没有很好记录的)性能计数器,要确保测量正确并不容易事物。
目前我做:
perf record -g -e ref-cycles -F 999 -- <cmd>
我认为这是未缩放的 CPU 频率,因此与部分代码运行的挂钟时间量成正比。但是谁知道呢?