WatchdogでNMI

SMPというかAPIC搭載システムでwatchdogが使えるようです。
ソースを読んでみたところ、CPUのパフォーマンスモニタ機能を利用して、時間を計測し、LocalAPIC経由でNMIを発行しています。LinuxのConfigでIO-APICが有効(SMPまたは、UPでもIO-APICを使う)の意味は、”IO-APICを有効にする”ということは自動的に”LocalAPICも有効になる”ということでした。
NMIの経路として、IO-APICは使っていません。CPUのパフォーマンスモニタが直接LocalAPICにNMIを発行します。
NMIはパフォーマンスモニターの機能で動作し、タイマー割り込みが5秒以上機能していないと、oopsメッセージを出力します。状況によってはここのルーチンを書き換えたほうがいいかもしれません。arch/i386/kernel/nmi.cのnmi_watchdog_tick()。例えば、Port80hに出力するなど。
ということで、これはタイマー割り込みが効かない状態でも使えます。
MagicSysRqは、キーボード割り込みが効くことが前提でのハングアップに使用できますが、それより重い場合はこちらの機能を使うしかありません。
これは急に思いついたのではなく、今発売されているオープンソースマガジン5月号の”Linux PD−問題判別脳力養成道場「クラッシュダンプとその解析」”に書かれていることです。