是否有可能提高perf stat的采样频率?

时间:2017-11-04 14:57:26

标签: perf

我正在使用perf进行性能分析,但监控的PMU事件数量高于硬件计数器的数量,因此会触发循环多路复用策略。但是,我的一些测试用例可能会运行不到一毫秒,这意味着如果执行时间小于默认开关频率(1000Hz)的乘法反转,则可能无法对某些事件进行分析。

如何提高perf stat perf record -F <freqency>的采样频率,以确保即使测量开销可能略有增加,也会记录每个事件?

1 个答案:

答案 0 :(得分:0)

首先,请记住采样计数不同。

perf record将始终对分析期间发生的所有事件进行采样。这意味着它不会计算所有发生的事件(当然可以调整!)。您可以修改样本采集的频率,以增加采集的样本数。它通常类似于每10个(或任何数字> 0)事件发生,perf record只会记录其中的1个。

perf stat会对发生的所有事件进行计数。对于发生的每个事件,perf stat将对其进行计数,并且不会错过任何事件,与采样不同。当然,如果涉及多路复用(即,当测量的事件的数量大于可用硬件计数器的数量时),所计数的事件的数量可能不准确。没有在perf stat中设置频率的概念,因为它所做的只是您要测量的所有事件的直接计数

这是来自linux内核源代码的proof: -

你可以看到它将样本周期(样本频率的倒数)设置为0 - 所以你知道什么是样本频率;)

无论如何,你可以做的是使用perf stat详细阅读perf stat -v来查看和了解你正在测量的所有事件发生了什么。

要了解有关perf stat的更多信息,您还可以阅读此answer

相关问题