Razão desconhecida da NMI 20 e 30 em uma VM

10

Puxei o console em uma máquina virtual que gerencio hoje e fui recebido com algumas mensagens do kernel:

[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] Dazed and confused, but trying to continue
[6064281.393568] Uhhuh. NMI received for unknown reason 30 on CPU 1.
[6064281.393888] Do you have a strange power saving mode enabled?
[6064281.394235] Dazed and confused, but trying to continue

São apenas alguns deles: 20 e 30 ocorrem na CPU 0 e 1.

  • VM é Debian Jessie, inicialização do BIOS ("QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-20161025_171302-gandalf 04/01/2014"; kernel 3.16.0-4-amd64)
  • O hypervisor é libvirt / KVM em execução no teste Debian (atualmente o 4.7.0-1-amd64 do Debian; qemu 1: 2.7 + dfsg-3).
  • O hardware é um Opteron 6344 em um Supermicro H8SGL-F com RAM ECC com a limpeza ativada.

Não vejo nenhuma mensagem de erro / aviso de NMI ou EDAC no host.

Alguma idéia do que está causando essas mensagens NMI no convidado? Eles têm algo com que se preocupar?

(Pode estar relacionado à NMI recebida por motivo desconhecido 20 - Você tem um modo de economia de energia estranho ativado? Mas isso parece ser bare metal).

derobert
fonte
I maravilha wether ele iria ajudar a passar para o kernel do VMsnoapic apci=off
Rui F Ribeiro
@RuiFRibeiro Bem, atualmente a VM está funcionando sem problemas (aparentes). Está em produção, então prefiro não reiniciar o sistema para tentar opções aleatórias do kernel apenas para ver. Seria uma história diferente se fosse a ajuda de um kernel dev para depurar o problema, etc. (Além disso, não é como se eles são frequentes-it'd demorar um pouco para ter certeza.)
derobert
Eu tenho tentado rastrear o mesmo problema há algum tempo. Alguns pontos de dados que podem ser úteis são: versão do kernel do host, versão qemu, se a VM usa inicialização de BIOS ou UEFI, se a VM usa i440fx ou q35.
Michael Hampton
@MichaelHampton solicitou detalhes adicionados à pergunta.
Derobert 26/12/16
Eu tenho o mesmo problema, eis os detalhes (na verdade, muito semelhantes): a VM é o Debian jessie (3.16.0-4-amd64) com o BIOS 1.7.5-20140531_083030-gandalf (01/04/2014). O hypervisor é libvirt / KVM no Debian jessie, mas com o kernel suportado (4.7.0-0.bpo.1-amd64). O hardware do hipervisor é composto por dois Opteron 6272s, com ECC RAM (placa-mãe atualmente desconhecida, mas provavelmente Supermicro de algum tipo). Dado que esses detalhes são notavelmente semelhantes aos de derobert, não estou muito surpreso por encontrar esse problema também, mas espero que ajude.
Jvperrin

Respostas:

2

Eu tive o mesmo problema usando uma configuração semelhante:

  1. CPU AMD (embora eu tenha visto relatos do mesmo problema com os processadores Intel, mas nenhum dos meus hipervisores em execução nos processadores Intel tenha esse problema, mesmo com o passthrough da CPU ativado).
  2. Debian, kernel 4.x no hypervisor e guest (4.9.0-4-amd64 no meu caso em ambos).

Minha solução foi alternar minha VM convidada para usar uma CPU emulada QEMU em vez da passagem da CPU. Isso implicava remover a <cpu mode='host-passthrough'/>linha do arquivo de definição de convidado.

Atualização : Eu fiz uma investigação mais aprofundada e os elementos problemáticos estavam sob o clockelemento:

<clock offset='utc'>
  <timer name='rtc' tickpolicy='catchup'/>
  <timer name='pit' tickpolicy='delay'/>
  <timer name='hpet' present='no'/>
</clock>

A solução real foi remover os três <timer>elementos, após o que <cpu mode='host-passthrough'/>poderia ser ativado novamente.

Para completar, adicionei uma resposta semelhante à pergunta vinculada .

mjturner
fonte
Esses três elementos são valores padrão, desativá-los não deve fazer nada precisamente e adicioná-los novamente ao salvar.
Simon Richter
1

O problema parece ser que o fim da interrupção não é comunicado corretamente.

Para libvirt, verifique se eoiestá ativado:

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

Na linha de comandos do KVM que se traduz em

-cpu …,+kvm_pv_eoi

Isso parece funcionar para nós -M q35, passagem da CPU do host e configuração padrão de outra forma (interrupções do RTC na fila, interrupções do PIT interrompidas, HPET indisponível).

Simon Richter
fonte
0

Eu tive o mesmo problema em Debian 9e Qemu 2.8.1(Debian 1:2.8+dfsg-6+deb9u5).
Eu o resolvi substituindo o modelo de placa de vídeo de virtiopara cirrus(ou você pode tentar usar outro modelo na qemupágina de manual).

Oleg Golovanov
fonte