安装linux系统报softlock,soft lockup 解决思路
一. 前言前几天,帮同事一起查一个机器老是挂死无法进入问题,说有一台虚拟机时不时登陆不上挂死,同时甲方竟然没有这些主机监控,判断不了当时的cpu,内存,网络等的基础数据信息,那就只能看看内核信息了。二 .分析通过dmesg命令显示如下图,可以看到有soft lockup- CPU..stuck for 24s!字样,soft lockup是一种内核死锁检查的方式,类似于程序的心跳,打印这句话表示发
一. 前言
前几天,帮同事一起查一个机器老是挂死无法进入问题,说有一台虚拟机时不时登陆不上挂死,同时甲方竟然没有这些主机监控,判断不了当时的cpu,内存,网络等的基础数据信息,那就只能看看内核信息了。
二 .分析
通过dmesg命令显示如下图,可以看到有soft lockup- CPU..stuck for 24s!字样,soft lockup是一种内核死锁检查的方式,类似于程序的心跳,打印这句话表示发生了内核软锁死。linux中每个cpu都设置了一个看门狗
进程,来检测内存软锁的问题,如果进程进入死锁或者进入死循环,长时间看门狗进程得不到调度,系统检测到进程占用cpu的时间超出特定的时间值后,会打印soft lockup告警,告警包含占用时长和进程名以及pid。
它的原理查了下:
在内核中启动一个优先级为MAX_RT_PRIO – 1的FIFO进程,在此进程里面会刷新时间戳。如果此时间戳超过设定的时间阈值没有更新,则会报softlockup错误。
image.png
三. 解决思路
通过上述信息看到发生软死锁的进程为kworker,这是系统自己的进程。
通过uname -a命令和ps -ef|grep spiderflow 命令分别查看:
查看下spiderflow监听的网卡是否为i40e类型网卡,i40e网卡驱动有可能会造成软死锁问题:
参见:https://access.redhat.com/solutions/3615651
如果是netmap驱动,如果流量不是特别大,建议用普通驱动跑下试试。
3) 设置参数信息,在发生软死锁的时候自动重启
即:
echo 1 > /proc/sys/kernel/softlockup_panic
也可以直接修改启动参数:
如下参数也都可以在/etc/default/grub修改GRUB_CMDLINE_LINUX行添加
kernel.sysrq=1
kernel.unknown_nmi_panic=1
kernel.softlockup_panic=1
这样在重启的时候不需要重新设置。
为了打印内核的core信息,需要安装kdump且启动程序
yum install kexec-tools -y
systemctl start kdump
更多推荐
所有评论(0)