【Linux打怪升级记 | 报错01】kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 28s! CentOS Linux内核锁死问题

🗺️博客地图

📍一、报错发现

📍二、危害分析

📍三、原因分析

🖈(一)名称解释

🖈(二)原理

🖈(三)原因

🖈(四)注释

📍四、解决方法


一、报错发现

kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 28s!

二、危害分析

内核软死锁BUG:soft lockup 会挂起cpu使你的系统不可用,导致负载慢慢增高最后死机

三、原因分析

(一)名称解释

soft lockup bug没有让系统彻底死机,但是若干个进程(或者kernel thread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。

(二)原理

Linux内核对于每一个cpu都有一个监控进程,在技术界这个叫做watchdog(看门狗),通过ps –ef | grep watchdog能够看见,进程名称为watchdog/X(数字:cpu逻辑编号1/2/3/4)。这个进程或者线程每一秒钟运行一次,否则会睡眠和待机。这个进程运行会收集每一个cpu运行时使用数据的时间并且存放到属于每个cpu自己的内核数据结构。在内核中有很多特定的中断函数。这些中断函数会调用soft lockup计数,会使用当前的时间戳与特定(对应的)cpu的内核数据结构中保存的时间对比,如果发现当前的时间戳比对应cpu保存的时间大于设定的阀值,他就假设监测进程或看门狗线程在一个相当可观的时间还没有执行。

(三)原因

Cpu软锁为什么会产生,是怎么产生的?如果linux内核是经过精心设计安排的CPU调度访问,那么怎么会产生cpu软死锁?

很可能原因是由于用户开发的或者第三方软件引入,看我们服务器内核panic的原因就是qmgr进程引起。因为每一个无限的循环都会一直有一个cpu的执行流程(qmgr进程表示一个后台邮件的消息队列服务进程),并且拥有一定的优先级。Cpu调度器调度一个驱动程序来运行,如果这个驱动程序有问题并且没有被检测到,那么这个驱动程序将会暂用cpu的很长时间。根据前面的描述,看门狗进程会抓住(catch)这一点并且抛出一个软死锁(soft lockup)错误,软死锁会挂起cpu使你的系统不可用。

(四)注释

"内核panic":kernel panic表示 Linux kernel走到了一个不知道该怎么走下一步的状况,一

旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来。

"qmgr进程":表示一个后台邮件的消息队列服务进程

四、解决方法

#追加到配置文件中

echo 30 > /proc/sys/kernel/watchdog_thresh

#查看

tail -1 /proc/sys/kernel/watchdog_thresh

#临时生效

sysctl -w kernel.watchdog_thresh=30

完美,打完收功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子Linux

各位看官老爷,行行好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值