S. *_*nco 0 linux frequency count perf
我试图了解perf记录的-c和-F选项实际上是做什么的,但是我无法解释我所看到的。我正在运行以下命令:
perf record -a -F <frequency> sleep 1
Run Code Online (Sandbox Code Playgroud)
和
perf record -a -c <count> sleep 1
Run Code Online (Sandbox Code Playgroud)
尝试不同的频率和计数值。我得到的结果 如下
在第一个表中,我设置频率,在第二个表中,设置计数。频率和计数如何影响事件数量?我认为事件的数量与频率和计数无关,但显然并非如此。性能实际上是做什么的?
Count和frequency是两个基本开关,perf record它们可以在使用时调整采样率(内部进行采样)。
计数
运行时perf record -c <number>,您要指定采样周期(其中“数字”是采样周期)。即,对于事件的每“第”次发生,将记录一个样本。当跟踪事件数量的性能计数器溢出时,将记录该样本。
我猜您正在借助来获取事件数perf report。请注意,perf report它将永远不会报告实际的事件数,而只会报告一个近似的事件。当您不断调整采样周期时,事件数将不断变化。perf report只会读取生成的perf.data文件perf record,并且基于生成的文件的大小,它假设记录的样本数(通过知道内存中记录的样本数)来进行假设。记录的实际事件数是通过-获得的
Number of events = Fixed Sample Period * Number of samples collected
其中“固定采样周期”是您指定的perf record -c。
频率
这是表示采样周期的另一种方法,即指定每秒的平均采样率(频率)-您可以使用perf记录-F来完成。因此,perf record -F 1000将每秒记录约1000个样本,并且当与事件对应的硬件/ PMU计数器溢出时,将生成这些样本。这意味着内核将动态调整采样周期,以确保该sampling过程符合采样频率。
这就是采样周期如何动态更新的方式。
采样频率越高,收集的样本数量越多(几乎成比例)。
可以通过运行以下命令查看采样周期的变化-
sudo perf report -D -i perf.data | fgrep RECORD_SAMPLE
只要采样周期不断变化,事件的总数就会随着采样周期的变化而不断增加。并且当采样周期保持固定时,事件总数保持固定,并且可以通过上面显示的公式获得。在这两种情况下,事件的总数都是近似的。
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |