このトピックでは、カーネルパラメーターkernel.unknown_nmi_panicを設定した後の異常な再起動の原因と解決策について説明します。
問題の説明
Linux Elastic Compute Service (ECS) インスタンスでカーネルパラメーターkernel.unknown_nmi_panic
を設定すると、インスタンスは異常に再起動します。 システムが回復すると、カーネルログには次のコールスタック情報が表示されます。
[5912557.130943] Uhhuh。 NMIは、CPU0上で未知の理由20を受信した。
[5912557.131115] 奇妙な省電力モードが有効になっていますか?
[5912557.131287] カーネルパニック-同期しない: NMI: 継続
しない原因
この問題は、カーネルパラメーターkernel.unknown_nmi_panic
を1に設定すると発生します。 カーネルが不明な非マスク割り込み (NMI) を受信すると、カーネルパニックが発生し、インスタンスが再起動します。
カーネルパラメーターkernel.unknown_nmi_panic
は、未知のNMIに遭遇したときのカーネルの動作を制御します。 ほとんどのLinuxディストリビューションでは、kernel.unknown_nmi_panic
の値が0に設定されているため、不明なNMIは無視されます。
kernel.unknown_nmi_panic = 1
: カーネルはシステムエラーを考慮し、未知のNMIに遭遇するとカーネルパニックをトリガーし、予期しないインスタンスの再起動またはサービスの中断を引き起こします。kernel.unknown_nmi_panic = 0
: この問題はアクションなしで無視され、インスタンスは現在の状態で実行され続けます。
解決策
解決策として、カーネルパラメーターkernel.unknown_nmi_panic
を0に設定して、不明なNMIを無視できます。
ECS インスタンスにログインします。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、カーネルパラメーター
kernel.unknown_nmi_panic
に関連する設定があるかどうかを確認します。grep 'kernel.unknown_nmi_panic ' /etc/sysctl.conf /etc/sysctl.d/*.conf
関連する設定が存在する場合は、冗長な設定を削除し、
/etc/sysctl.conf
ファイルにエントリを1つだけ保持します。kernel.unknown_nmi_panic = 0
に設定します。関連する構成が存在しない場合は、次のコマンドを実行して
kernel.unknown_nmi_panic = 0
を/etc/sysctl.conf
ファイルの末尾に追加します。sudo sh -c "echo >> /etc/sysctl.conf" sudo sh -c "echo 'kernel.unknown_nmi_panic = 0 ' >> /etc/sysctl.conf"
次のコマンドを実行して、現在の環境で設定を適用します。
sudo sysctl -p
説明カーネルパラメーター設定ファイルをリロードせずにカーネルパラメーターを変更する場合は、
sysctl -w kernel.unknown_nmi_panic=0
コマンドを実行して、カーネルパラメーターkernel.unknown_nmi_panic
の値を0
に変更します。