【问题标题】:Is it possible to raise the sampling frequency of perf stat?是否可以提高 perf stat 的采样频率?
【发布时间】:2017-11-04 14:57:26
【问题描述】:

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

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

【问题讨论】:

    标签: perf


    【解决方案1】:

    首先,请记住抽样不同于计数

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2021-10-09
      • 2014-11-05
      • 2014-12-30
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      相关资源
      最近更新 更多