You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7.9(内核5.16.11)出现soft lockup告警,是否可忽略及应对?

问题背景

运行环境

VMBox虚拟机中的CentOS 7.9(内核版本5.16.11),分配1G内存与8个CPU核心。

[root@dev236 ~]# uname -a
Linux dev236 5.16.11-1.el7.elrepo.x86_64 #1 SMP PREEMPT Tue Feb 22 10:22:37 EST 2022 x86_64 x86_64 x86_64 GNU/Linux

问题现象

运行计算密集型程序,启动8个线程持续占用CPU,一段时间后操作系统发出告警:

[root@dev236 src]# ./server --p:command-threads-count=8

[31274.179023] rcu: INFO: rcu_preempt self-detected stall on CPU
[31274.179039] watchdog: BUG: soft lockup - CPU#3 stuck for 210S! [server:1356]
[31274.179042] watchdog: BUG: soft lockup - CPU#1 stuck for 210S! [server:1350]
[31274.179070] watchdog: BUG: soft lockup - CPU#7 stuck for 210S! [server:1355]
[31274.179214] rcu: 0-...!: (1 GPs behind) idle=52f/1/0x4000000000000000 softirq=10073864/10073865
fqs=0

Message from syslogd@dev236 at Jan 25 18:59:49 ...
 kernel:watchdog: BUG: soft lockup - CPU#3 stuck for 210S! [server:1356]

Message from syslogd@dev236 at Jan 25 18:59:49 ...
 kernel:watchdog: BUG: soft lockup - CPU#1 stuck for 210S! [server:1350]

Message from syslogd@dev236 at Jan 25 18:59:49 ...
 kernel:watchdog: BUG: soft lockup - CPU#7 stuck for 210S! [server:1355]
 
^C
[root@dev236 src]#

程序日志仍在持续追加,说明程序仍在运行,疑问:是否可以忽略该告警?或者需要采取什么措施(比如降低计算强度、让CPU间歇运行、减少线程数)?

解答
  1. 不能直接忽略告警
    软锁告警(soft lockup)是内核watchdog检测到CPU核心超过指定时长(这里达210秒)未响应调度,无法执行内核任务(如RCU清理、中断处理)。虽然当前程序还在运行,但长期下去会引发内核功能异常:比如内存回收延迟、系统响应变慢,甚至触发严重内核错误。同时RCU stall告警也说明内核RCU机制无法正常完成回调,会影响整个系统稳定性。

  2. 推荐的解决措施

    • 减少线程数:当前虚拟机分配8个CPU核心,程序占满所有核心持续计算,导致内核完全抢不到CPU时间片。建议将线程数降到6-7个,留1-2个核心给内核处理调度和系统任务,这是最直接有效的方案。
    • 给计算线程插入间歇:在计算密集的代码循环中,周期性调用sched_yield()或短暂休眠(如usleep(10)),主动让出CPU给内核执行任务,避免CPU被完全占死。
    • 降低单线程计算强度:如果业务允许,拆分大计算任务为更小的块,让调度器有机会介入调度。
    • 临时调整内核参数(仅缓解):可临时调大watchdog超时时间(如执行echo 60 > /proc/sys/kernel/watchdog_thresh),但这只是掩盖问题,无法从根本解决,不推荐长期使用。

内容的提问来源于stack exchange,提问作者czg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:01:03