perf: interrupt took too long

Perf 问题

最近Linux 内核总是报一下错误信息,所以抽出点时间找了点资料了解了下:

[ 6216.961770] perf: interrupt took too long (2502 > 2500), lowering kernel.perf_event_max_sample_rate to 79000

发现在红帽的Bugzilla上已经有人提出过这个bug了,瞬间感觉轻松了不少,通读之后可以确定是Linux 内核perf 功能在打开的状态可以通过调节参数来修改这个问题。

最后找到一个关于这个bug相关的patch, 通过内核的注释可以看到一些内容,这些参数是在调试的时候比较有用的。

这个文件有详细的说明 : Documentation/sysctl/kernel.txt

+Hints to the kernel how much CPU time it should be allowed to
+use to handle perf sampling events.  If the perf subsystem
+is informed that its samples are exceeding this limit, it
+will drop its sampling frequency to attempt to reduce its CPU
+Some perf sampling happens in NMIs.  If these samples
+unexpectedly take too long to execute, the NMIs can become
+stacked up next to each other so much that nothing else is
+allowed to execute.
+0: disable the mechanism.  Do not monitor or correct perf's
+   sampling rate no matter how CPU time it takes.
+1-100: attempt to throttle perf's sample rate to this
+   percentage of CPU.  Note: the kernel calculates an
+   "expected" length of each sample event.  100 here means
+   100% of that expected length.  Even if this is set to
+   100, you may still see sample throttling if this
+   length is exceeded.  Set to 0 if you truly do not care
+   how much CPU is consumed.
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页