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