Uma instância ECS Linux pode reiniciar anormalmente quando o parâmetro de kernel kernel.unknown_nmi_panic está definido como 1. Este tópico explica a causa e fornece etapas para resolver o problema.
Descrição do problema
Após definir o parâmetro de kernel kernel.unknown_nmi_panic em uma instância ECS Linux, a instância reinicia anormalmente. Depois da recuperação do sistema, o log do kernel exibe a seguinte pilha de chamadas:
[5912557.130943] Uhhuh. NMI received for unknown reason 20 on CPU 0.
[5912557.131115] Do you have a strange power saving mode enabled?
[5912557.131287] Kernel panic - not syncing: NMI: Not continuing
Causa
Uma Interrupção Não Mascarável (NMI) é uma interrupção de hardware que a CPU não pode ignorar ou adiar. O kernel do Linux ocasionalmente recebe NMIs de fontes desconhecidas. Geralmente, essas interrupções são inofensivas e não indicam falha real de hardware.
O parâmetro de kernel kernel.unknown_nmi_panic controla a resposta do kernel a uma NMI desconhecida. Quando definido como 1, o kernel trata qualquer NMI desconhecida como erro de sistema, aciona um kernel panic e reinicia a instância. A maioria das distribuições Linux define esse parâmetro como 0 por padrão; assim, o kernel ignora NMIs desconhecidas.
|
Valor |
Comportamento |
|
1 |
O kernel aciona um kernel panic ao receber uma NMI desconhecida, causando reinicializações inesperadas da instância ou interrupções de serviço. |
|
0 |
O kernel ignora a NMI desconhecida e a instância continua em execução. |
Solução
Defina kernel.unknown_nmi_panic como 0 para impedir que o kernel entre em pânico diante de NMIs desconhecidas.
-
Conecte-se à instância ECS.
Para obter mais informações, consulte Conectar-se a uma instância Linux usando senha ou chave.
-
Verifique se há configurações que definem o parâmetro
kernel.unknown_nmi_panic.grep 'kernel.unknown_nmi_panic' /etc/sysctl.conf /etc/sysctl.d/*.conf-
Caso existam configurações, remova as entradas redundantes e mantenha apenas uma no arquivo
/etc/sysctl.conf. Defina o valor como 0:kernel.unknown_nmi_panic = 0 -
Se não houver configuração, adicione
kernel.unknown_nmi_panic = 0ao final do arquivo/etc/sysctl.conf:sudo sh -c "echo >> /etc/sysctl.conf" sudo sh -c "echo 'kernel.unknown_nmi_panic = 0' >> /etc/sysctl.conf"
-
-
Aplique a configuração.
sudo sysctl -pNotaPara alterar o valor do parâmetro sem recarregar o arquivo de configuração, execute
sysctl -w kernel.unknown_nmi_panic=0. -
Verifique se o parâmetro foi definido corretamente.
sysctl kernel.unknown_nmi_panicSaída esperada:
kernel.unknown_nmi_panic = 0Se a saída exibir
kernel.unknown_nmi_panic = 0, a correção foi aplicada. A instância não reiniciará mais ao receber uma NMI desconhecida.