【问题标题】:linux perf record: difference between count (-c) and frequency (-F) optionslinux perf 记录:计数(-c)和频率(-F)选项之间的差异
【发布时间】:2019-04-26 04:51:53
【问题描述】:

我试图了解 perf record 的 -c 和 -F 选项的真正作用,但我无法解释我所看到的。我正在运行这些命令:

perf record -a -F <frequency> sleep 1

perf record -a -c <count> sleep 1

尝试不同的 frequencycount 值。我得到的结果是 the following

我在第一个表中设置频率,在第二个表中设置计数。频率和计数如何影响事件的数量?我认为事件的数量与频率和数量无关,但显然情况并非如此。 perf 实际上是做什么的?

【问题讨论】:

  • 您是如何在表中获得“样本”和“事件”的?
  • 很有可能是在perf report的帮助下获得的。
  • 是的,我使用了性能报告

标签: linux count frequency perf


【解决方案1】:

Countfrequency 是在使用 perf record(在内部进行采样)时调整采样率的两个基本开关。

计数

当您运行perf record -c &lt;number&gt; 时,您正在指定采样周期(其中“数字”是采样周期)。也就是说,对于事件的每“第”次出现,将记录一个样本。当跟踪事件数量的性能计数器溢出时,将记录样本。

我猜你是在perf report 的帮助下获取事件的数量。请注意,perf report 永远不会报告事件的实际数量,而只是一个近似值。随着您不断调整采样周期,事件的数量将不断变化。 perf report 只会读取perf record 生成的perf.data 文件,并根据生成的文件大小,假设记录的样本数量(通过知道内存中记录的样本大小)。实际记录的事件数是通过 -

Number of events = Fixed Sample Period * Number of samples collected

Fixed Sample Period 是您使用 perf record -c 指定的时间。

频率

这是表示采样周期的另一种方式,即指定每秒采样的平均速率(频率) - 您可以使用 perf record -F 来执行此操作。所以perf record -F 1000每秒将记录大约1000个样本,这些样本将在事件对应的硬件/PMU计数器溢出时生成。这意味着内核会动态调整采样周期,以确保sampling 进程遵循采样频率。

This 是采样周期动态更新的方式。

采样频率越高,收集的样本数量就越多(几乎成比例地)。

运行命令可以看到采样周期的变化-

sudo perf report -D -i perf.data | fgrep RECORD_SAMPLE

只要采样周期不断变化,事件总数就会随着采样周期的变化而不断增加。并且在采样周期不变的情况下,事件总数保持不变,由上式得到。在这两种情况下,事件的总数将是近似的。

【讨论】:

  • 你解释的是正确的,但没有解释我得到的结果。我希望使用 -F 选项看到的是样本数量与频率成正比,而#samples/frequency 是程序的总运行时间。事件的数量应该是恒定的。使用 -c 选项计数 x 样本应该非常接近使用 -F 选项看到的事件数量。为了重现这一点,我必须传递一个事件(例如 -e 循环)并使用 count 足够高的值。我认为 perf 使用一个最小值,如果你传递一个非常小的数字,而不告诉你
  • 嗨@Arnabjyoti Kalita,你的解释很好。但是你知道为什么在系统比较空闲的时候,perf 采集的样本数是不正确的吗?例如,我以 100HZ 运行采样并运行 10 秒。我希望它有 1000 个样本,但实际上我只能得到 200 个。对此有什么想法吗?我真的对这个问题感到困惑。 (当系统满载时,它可以得到大约 1000 个样本)谢谢!我正在使用这个 cmd:sudo perf record -F 100 -a -g -- sleep 10;
  • @RichardLi 不要将频率除以系统代码频率,对于 linux,通常为 100Hz。见brendangregg.com/perf.html
  • 对于多线程程序,是对所有线程单独估计采样率,还是全局估计?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 2011-05-17
相关资源
最近更新 更多