最大采样频率的值是如何由linux内核决定的?如果在同一台机器上执行perf,为什么这个值会改变?
使用perf时,我注意到perf_event_max_sample_rate的值发生了变化?为什么?这个值不应该保持不变吗?
答案 0 :(得分:3)
Linux内核跟踪perf的不可屏蔽中断(NMI)处理程序执行的时间。如果采样持续时间超过可配置的阈值(perf_cpu_time_max_percent),则会降低采样率。这样可以防止系统挂起,因为它花费了所有时间来处理采样过程。在这种情况下,您将在内核日志中看到以下消息:
perf samples too long (2506 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
您可以通过将perf_cpu_time_max_percent设置为0来禁用此限制机制:
sysctl -w kernel.perf_cpu_time_max_percent=0
有用的链接: