web-dev-qa-db-ja.com

NMI不明な理由で20を受け取った—奇妙な省電力モードが有効になっていますか?

私はDebian GNU/Linux 7.8(wheezy)を使用しています。今日、MATLABプログラムを実行しているときに、ターミナルにこのメッセージが表示されました。

Message from syslogd@sas21 at Jul 18 16:40:49 ...
 kernel:[1747708.091929] Uhhuh. NMI received for unknown reason 20 on CPU 4.

Message from syslogd@sas21 at Jul 18 16:40:49 ...
 kernel:[1747708.091932] Do you have a strange power saving mode enabled?

Message from syslogd@sas21 at Jul 18 16:40:49 ...
 kernel:[1747708.091932] Dazed and confused, but trying to continue

その間にビープ音が聞こえたことも覚えています。

これは何を意味するのでしょうか?そして、私はさらに何をすべきですか?

8
dexterdev

問題は、End of Interruptが適切に通信されていないことです。

Libvirtの場合、eoiが有効になっていることを確認してください:

<domain>
  …
  <features>
    <apic eoi='on'/>
    …

KVMのコマンドラインで

-cpu …,+kvm_pv_eoi

これは、-M q35、ホストCPUパススルー、およびデフォルトの構成で機能するようです(RTC割り込みがキューに入れられ、PIT割り込みがドロップされ、HPTが利用できません)。

2
Simon Richter

これはマスク不能割り込み(NMI)であり、通常はシステムのハードウェアイベントによってトリガーされます。この場合、特定のNMIが構成されていないように見え、NMIを受信しましたが、それをどうするかわからないため、単に無視します。

さらに何をすべきですか?

  • メッセージを削除したいだけの場合は、syslogdを構成して、コマンド行からメッセージを非表示にしてみてください。
  • バックグラウンドの問題を修正したい場合は、マシンで何が変更されたかを切り分ける必要があります(たとえば、新しいハードウェア/ドライバーが追加されましたか?)。
2
MoopyGlue

カーネル3.16.0-4-AMD64でDebian 8.6を実行しているKVM/QEMUホストで数日以来、同じ問題が発生しています。これは私のログの一部です:

Jan 01 13:07:42 debbi3 kernel: Uhhuh. NMI received for unknown reason 20 on CPU 0.
Jan 01 13:07:42 debbi3 kernel: Do you have a strange power saving mode enabled?
Jan 01 13:07:42 debbi3 kernel: Dazed and confused, but trying to continue
Jan 02 10:48:58 debbi3 kernel: Uhhuh. NMI received for unknown reason 30 on CPU 0.
Jan 02 10:48:58 debbi3 kernel: Do you have a strange power saving mode enabled?
Jan 02 10:48:58 debbi3 kernel: Dazed and confused, but trying to continue

これはBOINCのインストール後に開始されました(現在のタスクはCollat​​z予想です)。現在、BOINCがCPUの99%を取得することを許可しています。

したがって、これらのメッセージの原因についての私の推測は、CPUが飽和状態にあり、(ハードウェア)割り込みを適切に処理するための十分な時間が得られないことです。あなたの特定のケースでは、他の何らかのプロセスまたは外部の原因が原因である可能性があります。 YMMV。

1
Mausy5043

たぶん、CPUが熱くなりすぎて小さなエラーが発生したり、いくつかの命令が失敗したりするかもしれませんが、これらの重要ではないエラーは、カーネルによって内部的に回復できます。

同様のメッセージを受け取りましたが、私の場合、GPUが熱くなりすぎていることがわかります。 PCで高解像度のライブストリームを見ていました。私はたまたまGPUがかなり古くて弱いことを知っているので、これは私のエラーログに表示されました:

Feb 15 10:39:14  kernel: [ 1708.477285] nouveau 0000:03:00.0: therm: temperature (86 C) went below the 'fanboost' threshold
Feb 15 10:39:16  kernel: [ 1710.452080] nouveau 0000:03:00.0: therm: temperature (90 C) hit the 'fanboost' threshold
Feb 15 10:39:21  kernel: [ 1714.926254] nouveau 0000:03:00.0: therm: temperature (86 C) went below the 'fanboost' threshold
Feb 15 10:39:23  kernel: [ 1717.261238] nouveau 0000:03:00.0: therm: temperature (90 C) hit the 'fanboost' threshold
Feb 15 10:39:23  kernel: [ 1717.535168] Uhhuh. NMI received for unknown reason 21 on CPU 0.
Feb 15 10:39:23  kernel: [ 1717.535172] Do you have a strange power saving mode enabled?
Feb 15 10:39:23  kernel: [ 1717.535173] Dazed and confused, but trying to continue
Feb 15 10:39:32  kernel: [ 1725.650454] nouveau 0000:03:00.0: therm: temperature (86 C) went below the 'fanboost' threshold
Feb 15 10:39:33  kernel: [ 1726.662936] nouveau 0000:03:00.0: therm: temperature (90 C) hit the 'fanboost' threshold
Feb 15 10:39:37  kernel: [ 1730.652335] nouveau 0000:03:00.0: therm: temperature (86 C) went below the 'fanboost' threshold

そしてもっとたくさん

1
knb

PC-Q35ハードウェアタイプを使用して、Debian 9.0(Stretch)を実行しているKVM仮想マシンゲストでこの動作を確認しました。ホストはAMD Turionです。

以下を含む、いくつかの解決策がオンラインで提案されています(例: this thread を参照)。

  1. CPUパススルーを使用するのではなく、QEMUエミュレートされたCPUに切り替える。
  2. KVM時計タイマーを変更する(<timer name='kvmclock' present='no'/>ゲストへ)。
  3. ゲストのACPIサポートを無効にします。

私の場合、QEMUエミュレートされたCPUに切り替えることで問題が解決しました。これを行うには、VM XMLファイルから次の行を削除しました:<cpu mode='Host-passthrough'/>

1
mjturner