rcu_sched 在 CPU + 看门狗上自我检测到停顿:BUG:软锁定 - CPU#3 卡住了 22 秒

Gre*_*reg 9 kernel lockup watchdog scheduler

由于无法通过 ssh 连接到机器,我将其连接到显示器,发现以下内容:

在此处输入图片说明

这台机器运行的是 Ubuntu Server 18.04 LTS 并且是第一代 8 核 Ryzen 1700。从那以后我重新启动了机器,它工作正常,但我不确定是什么导致了这种情况,并希望避免它再次发生。

在此处输入图片说明

在此处输入图片说明

Win*_*nix 4

来自:这些“Bug:软锁定”消息是关于什么的?

情况

在系统日志(/var/log/messages 或journalctl)中,打印了许多以下消息。

May 25 07:23:59 XXXXXXX kernel: [13445315.881356] BUG: soft lockup - CPU#16 stuck for 23s! [yyyyyyy:81602]
Run Code Online (Sandbox Code Playgroud)

接下来是各种堆栈跟踪。本文档试图解释软锁定消息的含义。

错误消息本身并没有告诉您导致问题的原因。

原因

“软锁定”被定义为导致内核在内核模式下循环超过 20 秒,而不给其他任务运行机会的错误。看门狗守护程序将向系统中的所有 CPU 发送不可屏蔽中断 (NMI),然后这些 CPU 会打印当前正在运行的任务的堆栈跟踪。

减少服务器负载是正常的解决方案:

解决

在正常情况下,如果负载减少,这些消息可能会消失。如果内核繁忙,处理大量需要分别扫描、释放或分配的对象,则可能会发生这种“软锁定”。这些任务的堆栈跟踪可以让您初步了解这些任务正在做什么。但是,为了能够检查消息背后的原因,需要进行内核转储。

您无法禁用这些消息,但是在某些情况下,增加触发这些软锁定的时间可以缓解这种情况。

为此,只需增加以下sysctl参数: kernel.watchdog_thresh此参数的默认值是10,并且将该值加倍可能是一个好的开始。