現在我遇到了一個關於Linux NMI Watchdog的問題。 我想使用Linux NMI看門狗來檢測和恢復操作系統掛起。所以我在grub.cfg中添加「nmi_watchdog = 1」。然後檢查/ proc/interrupt,每秒觸發NMI。但是當我加載死鎖模塊後(雙重獲取螺旋鎖),系統完全掛起,沒有任何事情發生(從不驚慌!)。它看起來像納米看門狗沒有工作!Linux nmi看門狗如何工作?
然後我讀了Documantation/nmi_watchdog.txt,它說:
注意,使用本地APIC時,NMI中斷的頻率 它產生,取決於系統負載。當地的APIC NMI看門狗 缺少更好的來源,使用「週期未定義的」事件。
什麼是「週期未煞車」「事件?
它補充
,但如果您的系統鎖定的任何東西,但「HLT」處理器 指令,看門狗將很快爲「循環 unhalted」事件會發生在每個時鐘週期觸發..如果它鎖定在 「hlt」,那麼你的運氣不好 - 事件根本不會發生, 和看門狗不會觸發。
好像是看門狗不會觸發如果處理器執行「HLT」指令,然後我在搜索「HLT」「英特爾64和IA-32架構軟件開發者手冊,Volumn 2A」,它描述爲如下:
停止指令執行並將處理器置於HALT狀態。 啓動中斷(包括NMI和SMI),調試異常,BINIT#信號,INIT#信號或RESET#信號將會執行恢復 執行。
然後,我輸了...
我的問題是:
- Linux如何NMI監控工作?
- 誰觸發nmi?
我的操作系統是Ubuntn 10.04 LTS,Linux-2.6.32.21,CPU Pentium 4雙核3.20 GHz。
我沒看過有關NMI看門狗(沒時間),整個源代碼,如果我不明白爲什麼NMI看門狗的工作,我想用性能監控計數器中斷和處理器間中斷(是由APIC提供)發送NMI而不是nmi看門狗。
有人能幫助我嗎?謝謝。
好東西NMI看門狗,把這個添加到我的貿易工具 – cctan 2012-03-26 03:09:08
Linux內核實現watchdog_nmi_enable()。 – firo 2016-12-26 09:27:30