浅谈Linux中的软锁定(soft lockup)和硬件监视器(watchdog)

1. 问题所示

跑深度学习的时候遇到卡顿卡机

hostname kernel:watchdog BUG:soft lockup - CPU#16 stuck for 130s![P2PMain-72:4030570]

界面如下所示:

在这里插入图片描述

大概意思是:

watchdog_thresh参数是硬件监视器的超时阈值,即硬件监视器在未接收到系统响应的时间后会触发软锁定检测

2. 基本知识

软锁定(soft lockup)和硬件监视器(watchdog)是两个与Linux系统稳定性和可靠性密切相关的概念

一、 软锁定(Soft Lockup):
软锁定是指CPU长时间运行在内核模式下执行一个任务,而没有释放控制权给其他任务,导致系统无法响应用户输入或其他请求

软锁定通常是由于以下原因之一引起的:

  • 内核空间代码执行时间过长:某个内核线程或驱动程序执行时间过长,导致其他任务无法获得CPU时间片

  • 内核死循环(Kernel Spinlock):在多线程环境中,如果一个线程持有锁而没有释放,其他线程就无法获得该锁,导致系统停滞

软锁定的检测通常由硬件监视器(watchdog)负责,一旦检测到软锁定,就会发出警告信息并尝试恢复系统

软锁定问题的解决方法通常包括优化内核代码、修复驱动程序漏洞以及调整系统配置

二、硬件监视器(Watchdog)
硬件监视器是一种系统机制,用于监视系统的状态,并在检测到故障或异常情况时采取措施以确保系统的稳定性和可靠性。硬件监视器通常包括一个计时器和一个独立的处理器或电路,它可以监视系统的活动并在预定的时间间隔内接收或产生定时器中断。

在Linux系统中,硬件监视器通常用于监视系统的软锁定情况。当硬件监视器检测到系统停滞或软锁定时,它会向系统发送中断信号,引发相应的处理机制来识别和解决软锁定问题。这通常涉及记录相关信息、尝试恢复系统状态,并在必要时重新启动系统

三、在Linux中的应用
在Linux中,软锁定和硬件监视器功能通常通过内核模块实现,例如softlockup和watchdog模块,这些模块负责监视系统的活动并在必要时采取措施以确保系统的稳定性和可靠性

可以通过配置内核参数或加载相应的内核模块来调整软锁定和硬件监视器的行为,包括设置监视器的超时时间、启用或禁用监视器功能、以及配置系统对软锁定的响应策略等

3. 进阶知识

调整硬件监视器的超时阈值,以便增加硬件监视器对软锁定的检测时间

一、临时生效的方式

临时将硬件监视器的超时阈值设置为30秒:echo 30 > /proc/sys/kernel/watchdog_thresh,(系统重新启动后会失效)

二、永久生效的方式

通过编辑配置文件/etc/sysctl.conf或/etc/sysctl.d/*.conf,并添加以下行:

kernel.watchdog_thresh = 30

使其生效:sysctl -p

sysctl是一个用于查看、设置和管理内核参数的工具,通过使用sysctl命令,可以方便地修改内核参数,例如在运行时临时生效或永久生效
常见的用法包括sysctl -w用于临时修改参数,以及sysctl -p用于重新加载配置文件中的参数

  • 40
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值