web-dev-qa-db-ja.com

Linux nmiウォッチドッグはどのように機能しますか?

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#信号は再開実行されます。

それから私は失った...

私の質問は:

  • 方法 Linux nmiウォッチドッグは動作しますか?
  • Who nmiをトリガーしますか?

私のOSはUbuntn 10.04 LTS、Linux-2.6.32.21、CPU Pentium 4デュアルコア3.20 GHzです。

Nmi watchdogについてのソースコード全体を読みませんでした(時間なし)。nmiwatchdogの動作を理解できなかった場合は、パフォーマンスモニタリングカウンター割り込みを使用しますおよびプロセッサ間割り込み(APICから提供)NMI nmi watchdogの代わりに送信).

誰か助けてくれますか?ありがとう。

25
silverbullettt

答えはハードウェアによって異なります。

マスク不能割り込み(NMI)は2つの方法でトリガーできます:1)カーネルが別の方法で割り込みできない停止状態に達したとき、および2)ハードウェアによってNMI =ボタン。

たとえば、一部のDellサーバーの前面には、内部にジグザグの線が付いた小さな円が表示されます。これはNMIシンボルです。近くに穴があります。割り込みをトリガーするピンを挿入します。カーネルがそれをサポートするように構築されている場合、これはカーネルパニックトレースをコンソールにダンプします。システムを再起動します。

これは非常に高速に発生する可能性があります。そのため、出力をファイルに保存するためのコンソールが接続されていない場合、再起動のみのように見える場合があります。

6

私が知っているように、nmi_watchdogはnon-interruptibleハングに対してのみトリガーされます。 Googleのコード例を見つけました: http://oslearn.blogspot.in/2011/04/use-nmi-watchdog.html

デッドロックが中断不可でない場合は、sysRqを有効にして、トレース(Alt-printscreen-t)またはクラッシュ(Alt-printscreen-c)をトリガーして詳細を取得できます。

4
Johnlcf