CPU 出现soft lockup的解决办法

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

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

lockup分为soft lockup和hard lockup。 soft lockup是指内核中有BUG导致在内核模式下一直循环的时间超过10s(根据实现和配置有所不同),而其他进程得不到运行的机会。hard softlockup是指内核已经挂起,可以通过watchdog这样的机制来获取详细信息。

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使你的系统不可用。

如果是用户空间的进程或线程引起的问题backtrace是不会有内容的,如果内核线程那么在soft lockup消息中会显示出backtrace信息。

直接原因是:如果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,便于定位
/proc/sys/kernel/softlockup_panic

产生CPU死锁的原因

https://blog.csdn.net/sunny05296/article/details/82858071?depth_1-utm_source=distribute.pc_relevant_right.none-task&utm_source=distribute.pc_relevant_right.none-task

解决方法

如果确认不是软件的问题。采用下面的解决办法。

如果您认为过度使用是原因,您尝试修改内核参数。

echo 30 > /proc/sys/kernel/watchdog_thresh

# 可能的原因可能是过量使用过多(尤其是内存过量使用)或其他虚拟化开销。尝试修改内核参数:时间不能超过60。#追加到配置文件中echo 30 > /proc/sys/kernel/watchdog_thresh #查看[root@git-node1 data]# tail -1 /proc/sys/kernel/watchdog_thresh#临时生效sysctl -w kernel.watchdog_thresh=30#内核软死锁(soft lockup)bug原因分析Soft lockup名称解释:所谓,soft lockup就是说,这个bug没有让系统彻底死机,但是若干个进程(或者kernel thread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。vi /etc/sysctl.confkernel.watchdog_thresh=30

如果修改后还不行,那么您得仔细检查您得资源使用情况。检查是否底层问题。尤其是io。

iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析

iostat的输出显示sda和dm-0上的磁盘利用率很高(〜100%磁盘利用率)

第二个输出显示check_rrdtraf在这些磁盘上写很多文件,并导致了问题。如果这些文件被收集起来,则可以对其进行处理-我建议您创建一个tmpfs存储(可能安装在当前文件夹上)。可以存储这些文件(我认为总大小不会太大)以进行处理,并且可以将已处理的文件移动到永久存储位置。由于tmpfs位于RAM中-处理速度将提高几倍,但是故障可能会导致不必要的数据丢失。

如果此解决方案(tmpfs)的风险太大-那么您将不得不增加可承载VM的磁盘数量(可能是RAID或来自其他服务器的iSCSI设备)。
在这种情况下-问题是磁盘利用率高(〜100%),这会导致软锁定。

详细排查:

https://blog.csdn.net/iteye_12675/article/details/82449392?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

cpu soft lockup相关推荐

  1. 报错 kernel:NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [insmod:55902]处理

    运行之前说的tcrypt.c的修改程序(只跑摘要算法md5,sha1) insmod tcrypt.ko sec=2 mode=400 报错 kernel:NMI watchdog: BUG: sof ...

  2. 安装linux系统报softlock,客户系统报错:soft lockup的解决办法

    redhat os日志如下:服务器会重启,负载重的时候会这样 Sep 28 02:14:00 hpdb1 kernel: BUG: soft lockup - CPU#40 stuck for 23s ...

  3. 遇到“BUG: soft lockup - CPU#0 stuck for 22s”的解决思路

    之前开发的抓包模块上线后有客户反馈有丢包问题,这两天在定位这个丢包问题,抓包模块由我和另一名"队友"负责,我负责底层抓包开发,他负责接收处理.在测试丢包问题的时候,他遇到一个板子连 ...

  4. NMI watchdog: BUG: soft lockup - CPU#2 stuck for 23s!

    <NMI watchdog: BUG: soft lockup> <kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 2 ...

  5. linux服务器关不了机,解决Linux关不了机开机,报错NMI watchdog: BUG: soft lockup - CPU#2 stuck for 22s的bug...

    问题描述 在安装完Ubuntu或者其他Linux, 关机时会卡死, 循环报错NMI watchdog: BUG: soft lockup - CPU#2 stuck for 22s!, 无法关机. 在 ...

  6. 虚拟机soft lockup CPU死锁问题

    记录折磨了我五天的虚拟机错误. 最近碰到了Centos上终端打印soft lockup CPU死锁,我的虚拟机直接卡死,非常烦人,刚开始这个状态是四五天出现一次,后来每次打开虚拟机一分钟左右就会出现这 ...

  7. 活久见 kernel:NMI watchdog: BUG: soft lockup - CPU#8 stuck for 28s! [xsoftdd/12:0]

    1. 引入 在一台linux机器上工作,没敲入任何命令,但命令行里突然出现 "kernel:NMI watchdog: BUG: soft lockup - CPU#8 stuck for ...

  8. 系统自己弹出诸如 kernel:NMI watchdog: BUG: soft lockup - CPU#2 stuck for 26s [mysqld:2875]

    系统在没有人使用的情况下自己弹出诸如以下关于内核的报错 [root@bkce tmp]# Message from syslogd@bkce at Oct 13 14:25:00 - kernel:N ...

  9. Ubuntu18.04安装compiz后死机无法进入图形桌面,提示watchdog: BUG: soft lockup - CPU#1 stuck for 22s!如何解决,测试有效!

    现象描述: 安装compiz后没有出现预想的桌面特效效果,本想重启尝试是否生效,结果系统图像桌面直接进不去了 问题定位: 查阅资料许多,定位为compiz本身存在bug,安装后导致gdm3和nvidi ...

最新文章

  1. HALCON打开之后相机无法被别的程序找到解决方法
  2. Redis性能问题排查解决手册(值得收藏)
  3. iOS6新特征:UICollectionView介绍
  4. 光伏农业七大问题不解决 投资者恐“先驱”变“先烈”
  5. 测试人必备实用技能:写出一份好的Bug报告
  6. 小程序开发之各种弹出框选择框汇总
  7. java画一只小猫程序代码_android 汤姆猫动画源码(主要就是模仿汤姆猫点击小猫给反应)...
  8. 【简单】Linux 搭建 UOJ
  9. sklearn,SVM 和文本分类
  10. 【Unity】在Scene窗口中发射射线
  11. Oracle数据库优化-列值大部分为null而谓词取非null值
  12. 正点原子stm32视频教程第7~10节知识总结
  13. win10无法唤醒睡眠之真头疼
  14. 转 一个游戏程序员的学习资料
  15. pdf压缩大小,一个简单的pdf压缩方法
  16. charles手机抓包配置
  17. 解决 win10 无法安装VS2019,visual studio installer下载进度始终为0
  18. 坦克小战的游戏规则说明(3)
  19. 【聆听】泰戈尔诗集(六)
  20. 昆明达内python培训

热门文章

  1. 双十一买什么比较划算?四款实用性超强不吃灰的数码好物推荐
  2. 上架被拒后如何再重新上传
  3. Rabbit的工作原理
  4. 微信小程序:更改字体(text)和图标(icon)的颜色以及RGB颜色值与十六进制颜色码之间的转换
  5. Linux下查看多线程进程下的线程
  6. python打印菱形,n可随意定义
  7. 上海社科院:沪30岁以下青年购房压力
  8. 运动蓝牙耳机品牌推荐:2022年六大运动耳机推荐
  9. 我的理想计算机作文300字,我的理想作文300字(通用5篇)
  10. cef ocx 支持_Cef3/Chromium的编译和音视频支持的修改