我已经尝试过命令perf记录,然后执行perf记录-P,这应该允许我指定采样周期,但它不起作用。 perf记录-P的结果与从perf记录获得的结果相同。
那么perf记录-P实际上做了什么?
答案 0 :(得分:2)
@Alina,
如果您阅读了perf记录的手册页,您可以看到perf record -P
将用于记录采样周期,而不是指定它。
如果要记录更多/更少的样本并修改周期,则必须指定perf record -c 2
(--count=
)之类的命令,其中2是采样周期。这意味着,对于您正在测量的事件的每两次出现,您将获得一个样本。然后,您可以修改采样周期并测试各种值。
表示采样周期的另一种方法是指定每秒采样的平均速率(频率) - 您可以使用perf record -F
来执行此操作。因此perf record -F 1000
将每秒记录大约1000个样本,并且当与事件对应的硬件/ PMU计数器溢出时将生成这些样本。这意味着内核将动态调整采样周期。
答案 1 :(得分:1)
可以使用-c
选项指定采样周期,但也可以使用-F
选项指定采样频率。根据{{3}}:
期间和费率
perf_events接口允许两种模式表示采样周期:
- 事件发生次数(期间)
- 平均样本率/秒(频率)
perf工具默认为平均速率。它设置为1000Hz,或 1000个样本/秒。这意味着内核正在动态调整 采样周期达到目标平均费率。调整 在原始配置文件数据中报告期间。相比之下,随着 在其他模式中,采样周期由用户设置并且不变化 样本之间。目前不支持采样期 随机化。
至于-P
选项的作用,perf的perf wiki(以及相关的commit message)包含一些背景知识。如果我正确地解释它,该选项意味着出于效率原因,许多相等的样本可以合并到也包含样本周期的单个事件中。最初的目的是减少生成的样本数量,以避免达到"速率限制"这将导致样本丢失。
答案 2 :(得分:0)
来自perf record
的手册页:
-P
,--period
记录样本期。
perf
文档经典简短,没有说任何重要内容。当然它不允许你添加一个参数。阅读代码并不能更好地了解该选项的用途。