sil*_*ttt 26 linux watchdog apic
现在我遇到了关于Linux NMI Watchdog的问题.我想使用Linux NMI看门狗来检测和恢复操作系统挂起.所以我将"nmi_watchdog = 1"添加到grub.cfg.然后检查/ proc/interrupt,每秒触发NMI.但是在我加载了一个带死锁的模块(双获取自旋锁)之后,系统完全挂起,什么也没发生(从不恐慌!).看起来nmi看门狗不起作用!
然后我读了Documantation/nmi_watchdog.txt,它说:
请注意,使用本地APIC时,它产生的NMI中断频率取决于系统负载.当地的APIC NMI监管机构缺乏更好的资源,使用" 周期无 ""事件.
什么是" 周期无恙 "事件?
它补充道
但是如果你的系统锁定了除"hlt"处理器指令之外的任何东西,监视器将很快触发,因为"循环无关"事件将在每个时钟滴答时发生...如果它锁定在"hlt",那么你就出局了好运 - 事件根本不会发生,看门狗不会触发.
似乎看门狗在处理器执行"hlt"指令时不会触发,然后我在" Intel 64和IA-32架构软件开发人员手册,Volumn 2A "中搜索"hlt ",它描述如下:
停止指令执行并将处理器置于HALT状态.启用的中断(包括NMI和SMI),调试异常,BINIT#信号,INIT#信号或RESET#信号将恢复 执行.
然后我输了......
我的问题是:
我的操作系统是Ubuntn 10.04 LTS,Linux-2.6.32.21,CPU Pentium 4双核3.20 GHz.
我没有阅读关于nmi看门狗的全部源代码(没时间),如果我无法理解nmi看门狗是如何工作的,我想用性能监控计数器中断和处理器间中断(由APIC提供)来代替发送NMI nmi看门狗.
有人能帮助我吗?谢谢.
小智 6
答案取决于您的硬件.
可以通过两种方式触发不可屏蔽中断(NMI):1)当内核达到不能被其他方法中断的暂停状态时,以及2)通过硬件 - 使用NMI按钮.
例如,在某些戴尔服务器的正面,您会看到一个小圆圈,里面有锯齿线.这是NMI符号.附近有一个洞.插入引脚以触发中断.如果构建内核以支持它,则会将内核崩溃跟踪转储到控制台,然后重新引导系统.
这可能发生得非常快.因此,如果您没有连接控制台以将输出保存到文件,则它可能看起来只是重新启动.
小智 3
据我所知,nmi_watchdog只会在不可中断的挂起时触发。我通过谷歌找到了一个代码示例: http: //oslearn.blogspot.in/2011/04/use-nmi-watchdog.html
如果您的死锁不是不可中断的,您可以尝试启用 sysRq 来触发一些跟踪 (Alt-printscreen-t) 或崩溃 (Alt-printscreen-c) 以获取更多信息。
| 归档时间: |
|
| 查看次数: |
41714 次 |
| 最近记录: |