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

软死锁的检测--看门狗

软死锁(Soft Lockup)检测中,看门狗(Watchdog)的核心原理是 通过周期性检查 CPU 调度是否正常,判断是否因任务长时间霸占 CPU 导致无法调度其他任务,以下展开说明:

1. 基础机制:定时器 + 内核线程

  • 定时器触发:系统为每个 CPU 启动高精度定时器(hrtimer) ,周期性执行 watchdog_timer_fn 函数(类似 “定时检查” 逻辑),默认间隔由 watchdog_thresh 控制(通常初始 10 秒,可通过 sysctl 调整 )。
  • 内核线程辅助:同时,为每个 CPU 创建优先级最高的内核线程(如 watchdog/XX 为 CPU 编号 ),线程运行时会调用 __touch_watchdog() 更新时间戳(watchdog_touch_ts) ,标记 “CPU 调度正常”。

2. 检测逻辑:对比时间戳判断 “僵死”

定时器到期后,watchdog_timer_fn 会执行关键检查:

  • 读取当前时间 now,并获取上一次 “喂狗” 的时间戳 touch_ts(即线程更新的 watchdog_touch_ts )。
  • 计算时间差 now - touch_ts,若差值 超过 watchdog_thresh 阈值(比如默认 10 秒),则认为:
    CPU 上的任务长期霸占资源,导致内核线程无法正常调度(连优先级最高的看门狗线程都无法更新时间戳),判定发生 软死锁 。

简单说:若 “定时检查” 发现 “喂狗” 超时,说明 CPU 调度被长时间阻塞,触发软死锁告警。

3. 响应动作:告警与故障处理

  • 基础告警:检测到软死锁时,内核会打印堆栈跟踪(dmesg 日志能看到进程调用链 ),方便定位是哪个任务 / 函数长期占用 CPU。
  • 进阶配置:可通过 kernel.softlockup_panic 等参数,设置触发软死锁时直接让系统 panic(内核崩溃),或结合 panic_timeout 自动重启,避免系统长期僵死。

4. 典型场景与原理适配

比如某 CPU 上有个无限循环的内核任务(如驱动 bug 导致死循环 ),会持续霸占 CPU,使看门狗线程无法获得调度权 → 时间戳无法更新 → 定时器检查超时 → 触发软死锁告警。这也体现了看门狗的核心价值:用 “定时喂狗 - 超时检测” 机制,暴露 CPU 调度异常,让运维 / 开发能快速定位系统 “僵死” 根源。

 

总结来说,软死锁看门狗是通过定时检查 CPU 调度心跳(时间戳) 的机制,发现并告警 “任务长期阻塞 CPU 导致无法调度” 的问题,本质是用 “周期性验证” 确保系统调度的活性 。

相关文章:

  • uniapp打包报错
  • 渲染学进阶内容——机械动力的渲染系统(2)
  • 一文详解前缀和:从一维到二维的高效算法应用
  • 历史数据分析——贵州茅台
  • [学习] FIR多项滤波器的数学原理详解:从多相分解到高效实现(完整仿真代码)
  • 浏览器 报502 网关错误,解决方法2
  • RK全志平台LCD设备调试思路
  • MySQL使用EXPLAIN命令查看SQL的执行计划
  • 【Linux】Linux多路复用-epoll
  • CSS预编译语言less
  • DP刷题练习(一)
  • 软件工程的相关名词解释
  • PostgreSQL的扩展pg_visibility
  • BeckHoff <---> Keyence (LJ-X8000) 2D相机 Profinet 通讯
  • # 把 ISO 写入 U 盘(相关了解)
  • 《深度学习:基础与概念》第一章 学习笔记与思考
  • VBA使用字典统计
  • 键盘按键枚举 Key 说明文档
  • [创业之路-418]:经济学 - 凯恩斯主义的需求管理与西方供应侧理论、供需关系理论详解以及对创者者的启示
  • 【leetcode】78. 子集
  • 西安营销型网站制作价格/百度广告点击软件源码
  • 网站建设什么软件好/关键词大全
  • 衡阳网站建设/今日网站收录查询
  • 淘宝联盟返利网站怎么做/免费p站推广网站入口
  • 手机网站模板 网址/如何快速推广自己的品牌
  • c 网站做微信支付功能/什么软件能搜索关键词能快速找到