【问题标题】:Why is the kernel Tainted after softlockup?为什么softlockup后内核被污染了?
【发布时间】:2020-05-13 06:53:25
【问题描述】:

我正在使用Ubuntu 16.04.6 LTS,并且我正在运行我的程序,该程序有一个实时线程,核心使用率为 100%,在这种情况下,内核在 syslog 中如下所示

kernel: watchdog: BUG: soft lockup - CPU#1 stuck for 22s! …
kernel: print all modules …

在我看到软锁定内核在 syslog 中显示如下所示

kernel: CPU: 1 PID: 53590 Comm: … Tainted: G OEL … #1

看到上面的消息后,我的服务器完全挂起,我必须重新启动它。而我的服务器有很多核心,只有一个核心是 100%。

我的内核版本是 4.15。

我有四个问题:

  1. 为什么我的服务器完全挂起并冻结? (我有很多核,只有一个是满的)
  2. 如何解决不再发生?
  3. 为什么在软锁定后我看到内核被污染了?
  4. 如何说内核(看门狗)这种情况不是BUG,是正常的? (任何配置或禁用方式)

注意:我不想知道 tainted 的含义。因为我知道一些关于this 的信息。我想知道为什么我的软锁定会导致内核受到污染(我的服务器有很多内核,其中只有一个是 100% 的内核使用率,而另一个内核是免费的)? (在我的情况下)

【问题讨论】:

    标签: linux ubuntu linux-kernel


    【解决方案1】:

    前2个问题太笼统了,所以我把重点放在后2个问题上:

    问:为什么在软锁定后我看到内核被污染了?

    答:通常,内核被认为是“受污染的”,因为加载的一个或多个内核模块未获得 GPL 许可。这个“受污染”的词在内核日志中很重要,因为未受污染的内核崩溃案例在内核社区中具有更高的优先级。

    Q:如何说内核(看门狗)这种情况不是BUG,是正常的?

    答:不完全理解你的问题。通常,软锁定是由于某些代码(例如,内核线程或中断处理程序)没有释放 CPU(例如,禁用中断)引起的,每个 CPU 内核都有一个软锁定看门狗线程,一旦该线程没有有机会长时间运行,看门狗会被触发。

    【讨论】:

    • 我没有一般性问题,我对我的情况有疑问。我的问题是为什么我的服务器只有一个核心(线程)为 100% 时会冻结
    • 你的答案不是我的答案,因为我的问题是,为什么我的软锁定导致内核崩溃(如果内核污染等于内核崩溃(我不确定))?,但你说的意思被污染了。
    • 从这个链接stackoverflow.com/a/27255536/1539100你可以看到内核污染不等于内核崩溃。所以我对这种情况有疑问,如果内核没有崩溃,为什么我的服务器会冻结?或者我怎么知道我的内核是否崩溃?
    • 关于第二个答案我的问题是,有没有什么办法可以配置看门狗来延长等待时间?或者我可以禁用它吗?
    • 可以参考/proc/sys/kernel/softlockup_thresh和Documentation/lockup-watchdogs.txt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多