2

简单但复杂的问题:

使用什么计数器来获取性能工具来测量挂钟时间?

作为基线,我认为在分析代码时需要测量的第一件事就是挂钟时间,以初步了解代码大部分时间在哪里。我不在乎它是否是 IO 或带宽限制或其他我只想知道它慢的地方。

听起来很简单的要求,但现代 CPU 为高效工作而采取的所有技巧(如频率缩放等)以及 perf 中可用的大量不同(没有很好记录的)性能计数器,要确保测量正确并不容易事物。

目前我做:

perf record -g -e ref-cycles -F 999 -- <cmd>

我认为这是未缩放的 CPU 频率,因此与部分代码运行的挂钟时间量成正比。但是谁知道呢?

4

1 回答 1

2

您可以使用task-clock.

这是进程运行时的明确挂钟时间,并且作为奖励是可移植的,因为它不依赖任何 PMU 事件。

于 2020-02-12T16:32:22.330 回答