首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux看门狗

Linux看门狗
EN

Stack Overflow用户
提问于 2012-03-26 02:35:24
回答 2查看 49.3K关注 0票数 30

现在,我遇到了一个关于Linux看门狗的问题。我想使用Linux看门狗来检测和恢复OS挂起。因此,我将"nmi_watchdog=1“添加到grub.cfg中。然后检查/proc/中断,NMI是每秒触发的。但是,在我加载了一个死锁模块(双获取自旋锁)之后,系统完全挂起了,什么也没有发生(永远不要惊慌!)看来NMI的看门狗不起作用了!

然后我阅读了文档/nmi_watchdog.txt dog.txt,它说:

需要注意的是,当使用本地APIC时,它所产生的NMI中断的频率取决于系统负载。缺少更好的源代码的本地APIC看门狗使用“循环未停止的”事件。

什么是“循环未停止的”事件?

它补充说:

--但是如果您的系统锁定了"hlt“处理器指令之外的任何东西,当”循环未停止“事件将发生它锁定在"hlt”上的每个时钟tick...If时,看门狗就会立即触发,那么您就倒霉了--这个事件不会发生,而看门狗也不会触发。

如果处理器执行"hlt“指令,看门狗就不会触发,然后我在"Intel 64和IA-32 Architectures Developer's手册,Volumn 2A”中搜索"hlt“,它描述如下:

停止指令执行,并将处理器置于暂停状态。启用的中断(包括NMI和SMI)、调试异常、BINIT#信号、INIT#信号或RESET#信号将恢复执行。

那我就迷路了..。

我的问题是:

  • How是Linux NMI看门狗work?
  • Who触发NMI?

吗?

我的操作系统是Ubuntu10.04LTS,Linux2.6.32.21,CPU奔腾4双核3.20 GHz.

我没有读过关于NMI看门狗的全部源代码(没时间),如果我不知道NMI看门狗是如何工作的,我想使用性能监视计数器中断和处理器间中断(由APIC提供)来发送NMI,而不是NMI看门狗。

EN

回答 2

Stack Overflow用户

发布于 2013-07-18 23:17:14

答案取决于你的硬件。

非屏蔽中断( NMI )可以通过两种方式触发: 1)当内核达到不能被另一种方法中断的停止状态;2)硬件--使用NMI按钮。

例如,在一些戴尔服务器的前面,你会看到一个小圆圈,里面有一条锯齿形线。这是NMI符号。附近有个洞。插入一个引脚以触发中断。如果您的内核是为支持它而构建的,这将将内核恐慌跟踪转储到控制台,然后重新启动系统。

这种情况可能会发生得很快。因此,如果您没有附加一个控制台来将输出保存到一个文件中,那么它可能只是一个重新启动。

票数 9
EN

Stack Overflow用户

发布于 2012-04-16 02:19:30

据我所知,nmi_watchdog只会触发不可中断的挂起.我找到了google的一个代码示例:http://oslearn.blogspot.in/2011/04/use-nmi-watchdog.html

如果您的死锁不是不可中断的,您可以尝试使sysRq触发一些跟踪(Interruptiable)或崩溃(Alt)以获得更多信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9865952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档