Linuxの問題が発生しましたNMIWatchdog。Linuxを使用して、OSのハングを検出および回復するためにLinux NMI Watchdogを使用します。そして、/ proc/interruptをチェックして、NMIが毎秒トリガーされました。しかし、デッドロック(二重取得スピンロック)でモジュールをロードした後、システムは完全にハングし、何も起こらない(パニックに陥らない!)nmiウォッチドッグが機能しなかったようです!
次に、私はDocumantation/nmi_watchdog.txtを読みました。
ローカルAPICを使用する場合、NMI生成する割り込みの頻度は、システムの負荷に依存します。ローカルAPIC NMIウォッチドッグ、より良いソースの欠如、「cycles unhalted」イベントを使用します。
「cycles unhalted」イベントとは何ですか?
追加しました
しかし、システムが「hlt」プロセッサ命令以外でロックアップすると、クロックティックごとに「cycles unhalted」イベントが発生するため、ウォッチドッグがすぐにトリガーされます...「hlt」でロックアップすると、外に出ます運がよければ-イベントはまったく発生せず、ウォッチドッグはないトリガーです。
プロセッサが「hlt」命令を実行してもウォッチドッグがトリガーしないように思えるので、「Intel 64およびIA-32アーキテクチャソフトウェア開発者マニュアルVolumn 2A」、次のように説明します。
命令の実行を停止し、プロセッサをHALT状態にします。有効な割り込み(NMIおよびSMI)を含む)、デバッグ例外、BINIT#信号、INIT#信号、またはRESET#信号は再開実行されます。
それから私は失った...
私の質問は:
私のOSはUbuntn 10.04 LTS、Linux-2.6.32.21、CPU Pentium 4デュアルコア3.20 GHzです。
Nmi watchdogについてのソースコード全体を読みませんでした(時間なし)。nmiwatchdogの動作を理解できなかった場合は、パフォーマンスモニタリングカウンター割り込みを使用しますおよびプロセッサ間割り込み(APICから提供)NMI nmi watchdogの代わりに送信).
誰か助けてくれますか?ありがとう。
答えはハードウェアによって異なります。
マスク不能割り込み(NMI)は2つの方法でトリガーできます:1)カーネルが別の方法で割り込みできない停止状態に達したとき、および2)ハードウェアによってNMI =ボタン。
たとえば、一部のDellサーバーの前面には、内部にジグザグの線が付いた小さな円が表示されます。これはNMIシンボルです。近くに穴があります。割り込みをトリガーするピンを挿入します。カーネルがそれをサポートするように構築されている場合、これはカーネルパニックトレースをコンソールにダンプします。システムを再起動します。
これは非常に高速に発生する可能性があります。そのため、出力をファイルに保存するためのコンソールが接続されていない場合、再起動のみのように見える場合があります。
私が知っているように、nmi_watchdogはnon-interruptibleハングに対してのみトリガーされます。 Googleのコード例を見つけました: http://oslearn.blogspot.in/2011/04/use-nmi-watchdog.html
デッドロックが中断不可でない場合は、sysRqを有効にして、トレース(Alt-printscreen-t)またはクラッシュ(Alt-printscreen-c)をトリガーして詳細を取得できます。