perf 支持的最大采样频率

use*_*764 3 linux perf

最大采样频率的值是如何由linux内核决定的?如果 perf 在同一台机器上执行,为什么这个值会改变?

使用 perf 时,我注意到 perf_event_max_sample_rate 的值发生了变化吗?为什么?这个值不应该保持不变吗?

Iva*_*tov 5

Linux 内核跟踪 perf 的不可屏蔽中断 (NMI) 处理程序执行的时间。如果采样持续时间超过可配置的阈值 ( perf_cpu_time_max_percent ),它会降低采样率。这可以防止系统挂起,因为它花费了所有的时间来处理采样过程。在这种情况下,您将在内核日志中看到以下消息:

perf samples too long (2506 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
Run Code Online (Sandbox Code Playgroud)

您可以通过将 perf_cpu_time_max_percent 设置为 0 来禁用此限制机制:

sysctl -w kernel.perf_cpu_time_max_percent=0
Run Code Online (Sandbox Code Playgroud)

有用的链接: