• kernel:NMI watchdog: BUG: soft lockup


    环境说明:虚拟机 CentOS7中解压一个8G的包时,内核报错

    Message from syslogd@cosmo-01 at Apr 25 11:05:59 ...
    kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 21s! [xfs-data/dm-0:451]

    内核软死锁(soft lockup)bug原因分析:

          

    网上找资料分析了一下原因,直接原因是:如果CPU太忙导致喂狗(watchdog)不及时,此时系统会打印CPU死锁信息:

    kernel:BUG: soft lockup - CPU#0 stuck for 38s! [kworker/0:1:25758]

    kernel:BUG: soft lockup - CPU#7 stuck for 36s! [java:16182]

    ......

    内核参数kernel.watchdog_thresh(/proc/sys/kernel/watchdog_thresh)系统默认值为10。如果超过2*10秒会打印信息,注意:调整值时参数不能大于60。

    虽然调整该值可以延长喂狗等待时间,但是不能彻底解决问题,只能导致信息延迟打印。因此问题的解决,还是需要找到根本原因。

    可以打开panic,将/proc/sys/kernel/panic的默认值0改为1,便于定位。

    网上查找资料,发现引发CPU死锁的原因有很多种:

    * 服务器电源供电不足,导致CPU电压不稳导致CPU死锁
      https://ubuntuforums.org/showthread.php?t=2205211
      
      I bought a small (500W) new power supply made by what I feel is a reputable company and made the swap.
      GREAT NEWS: After replacing the power supply, the crashes completely stopped! 
      I wanted to wait a while just to be sure, but it is now a few weeks since the new powersupply went in, and I haven't had a single crash since.
      The power supply is not something that I would normally worry about, but in this case it totally fixed my problem.
      Thanks to those who read my post, and especially to those who responded.

    * vcpus超过物理cpu cores
      https://unix.stackexchange.com/questions/70377/bug-soft-lockup-cpu-stuck-for-x-seconds

    * 虚机所在的宿主机的CPU太忙或磁盘IO太高

    * 虚机的的CPU太忙或磁盘IO太高
      https://www.centos.org/forums/viewtopic.php?t=60087
      
    * BIOS KVM开启以后的相关bug,关闭KVM可解决,但关闭以后物理机不支持虚拟化
      https://unix.stackexchange.com/questions/70377/bug-soft-lockup-cpu-stuck-for-x-seconds
      
    * VM网卡驱动存在bug,处理高水位流量时存在bug导致CPU死锁

    * BIOS开启了超频,导致超频时电压不稳,容易出现CPU死锁
      https://ubuntuforums.org/showthread.php?t=2205211
      
    * Linux kernel存在bug
      https://unix.stackexchange.com/questions/70377/bug-soft-lockup-cpu-stuck-for-x-seconds

    * KVM存在bug
      https://unix.stackexchange.com/questions/70377/bug-soft-lockup-cpu-stuck-for-x-seconds
      
    * clocksource tsc unstable on CentOS and cloud Linux with Hyper-V Virtualisation
      https://unix.stackexchange.com/questions/70377/bug-soft-lockup-cpu-stuck-for-x-seconds
      通过设置clocksource=jiffies可解决

    * BIOS Intel C-State开启导致,关闭可解决
      https://unix.stackexchange.com/questions/70377/bug-soft-lockup-cpu-stuck-for-x-seconds
      https://support.citrix.com/article/CTX127395
      http://blog.sina.com.cn/s/blog_906d892d0102vn26.html

    * BIOS spread spectrum开启导致
      当主板上的时钟震荡发生器工作时,脉冲的尖峰会产生emi(电磁干扰)。spread spectrum(频展)设定功能可以降低脉冲发生器所产生的电磁干扰,脉冲波的尖峰会衰减为较为平滑的曲线。
      如果我们没有遇到电磁干扰问题,建议将此项设定为disabled,这栏可以优化系统的性能表现和稳定性;
      否则应该将此项设定为enabled。 如果对cpu进行超频,必须将此项禁用。因为即使是微小的脉冲值漂移也会导致超频运行的cpu锁死。
      再次强调:CPU超频时,SPREAD SPECTRUM必须关闭,否则容易出现锁死cpu的情况。

    #追加到配置文件中
    
    echo 30 > /proc/sys/kernel/watchdog_thresh 
    
    #查看
    
    [root@git-node1 data]# tail -1 /proc/sys/kernel/watchdog_thresh
    30
    
    #临时生效
    
    sysctl -w kernel.watchdog_thresh=30
    
    #内核软死锁(soft lockup)bug原因分析
    
    Soft lockup名称解释:所谓,soft lockup就是说,这个bug没有让系统彻底死机,但是若干个进程(或者kernel thread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。
    
    vi /etc/sysctl.conf
    
    kernel.watchdog_thresh=30
  • 相关阅读:
    前端开发拥有属于自己的云服务器能做什么?
    C语言编译、链接和运行详解
    C程序运行机制概述
    Java之顺序查找
    C语言注释
    C转义字符
    Java之二维数组基本使用
    Java之类与对象基本使用
    分享些发表技术类文章的平台
    解决蓝奏云链接无法访问问题
  • 原文地址:https://www.cnblogs.com/fusheng11711/p/10767190.html
Copyright © 2020-2023  润新知