当前位置: 首页 > news >正文

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

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

         Soft lockup名称解释:所谓,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使你的系统不可用。

         解决办法:

#追加到配置文件中

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)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。

kernel.watchdog_thresh=30

相关文章:

  • reactjs服务器端渲染——node搭建简易服务器
  • java后台接收前端对象数组
  • MyBatis 中if 标签 判断字符串不生效
  • 开源大数据周刊-第20期
  • Linux新建Oracle用户和数据库并导入sql文件
  • layui 数据表格内嵌上传按钮,并在上传中增加所在行的id或其他属性
  • 重启oracle的方法
  • ios中屏幕旋转的控制
  • 已有实例创建新的数据库空间和用户,并授权
  • 关于margin和padding的总结
  • 关于kafka发送消息过大导致的异常的解决方式
  • PHP利用Curl实现多线程抓取网页和下载文件
  • Java Logback教程
  • 石子合并[DP-N3]
  • log4j2定期生成和删除过期日志文件的配置
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • canvas 高仿 Apple Watch 表盘
  • Create React App 使用
  • js继承的实现方法
  • js正则,这点儿就够用了
  • log4j2输出到kafka
  • spark本地环境的搭建到运行第一个spark程序
  • Unix命令
  • Vue.js 移动端适配之 vw 解决方案
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 百度地图API标注+时间轴组件
  • 成为一名优秀的Developer的书单
  • 从PHP迁移至Golang - 基础篇
  • 番外篇1:在Windows环境下安装JDK
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 前嗅ForeSpider中数据浏览界面介绍
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何实现 font-size 的响应式
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 设计模式走一遍---观察者模式
  • 我的业余项目总结
  • 译米田引理
  • 应用生命周期终极 DevOps 工具包
  • 在Mac OS X上安装 Ruby运行环境
  • 栈实现走出迷宫(C++)
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 阿里云服务器如何修改远程端口?
  • 通过调用文摘列表API获取文摘
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (27)4.8 习题课
  • (day6) 319. 灯泡开关
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (solr系列:一)使用tomcat部署solr服务
  • (转)人的集合论——移山之道
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 中创建支持集合初始化器的类型
  • .NET框架