kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 28s! CentOS7linux中內核被鎖死


環境說明:虛擬機 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM