알 수 없는 이유로 NMI 20을 받았습니다. 이상한 배터리 절약 모드를 활성화했습니까?

알 수 없는 이유로 NMI 20을 받았습니다. 이상한 배터리 절약 모드를 활성화했습니까?

저는 Debian GNU/Linux 7.8을 사용하고 있습니다. 오늘 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

중간에 경고음도 들었던 기억이 납니다.

무슨 뜻이에요? 또 무엇을 해야 합니까?

답변1

문제는 인터럽트의 끝이 제대로 전달되지 않는 것 같습니다.

eoilibvirt의 경우 활성화되어 있는지 확인하세요 .

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

KVM 명령줄에서 다음으로 변환합니다.

-cpu …,+kvm_pv_eoi

-M q35이는 호스트 CPU 패스스루 및 기본 구성(RTC 인터럽트 대기, PIT 인터럽트 삭제, HPET 사용 불가) 에서 작동하는 것으로 보입니다 .

답변2

며칠 후, 커널 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 설치 이후에 시작되었습니다(현재 작업은 Collatz Conjecture입니다). 현재 BOINC가 CPU의 99%를 점유하도록 허용합니다.

따라서 이러한 메시지의 원인에 대한 내 추측은 CPU가 포화되어 (하드웨어) 인터럽트를 적절하게 처리할 시간이 충분하지 않다는 것입니다. 특별한 경우에는 다른 프로세스나 외부 원인이 원인일 수 있습니다. YMMV.

답변3

이는 일반적으로 시스템의 하드웨어 이벤트에 의해 트리거되는 NMI(마스크 불가능 인터럽트)입니다. 이 경우에는 특정 NMI가 설정되지 않은 것으로 보이며, NMI를 수신했음에도 불구하고 어떻게 해야 할지 모르므로 그냥 무시합니다.

또 무엇을 해야 합니까?

  • 메시지를 제거하고 싶다면 syslogd를 구성하여 명령줄에서 메시지를 숨길 수 있습니다.
  • 백그라운드 문제를 해결하려면 컴퓨터에서 발생한 변경 사항을 목록화해야 합니다(예: 새 하드웨어/드라이버 추가?).

답변4

PC-Q35 하드웨어 유형을 사용하여 Debian 9.0(Stretch)을 실행하는 KVM 가상 머신 게스트에서 이 동작을 보았습니다. 호스트 시스템은 AMD Turion입니다.

온라인에서 여러 가지 솔루션이 제안되었습니다(예:이 스레드), 다음을 포함

  1. CPU 패스스루를 사용하는 대신 CPU를 에뮬레이션하는 QEMU로 전환하세요.
  2. KVM 시계 타이머를 변경합니다( <timer name='kvmclock' present='no'/>게스트에 추가됨).
  3. 게스트에서 ACPI 지원을 비활성화합니다.

제 경우에는 CPU를 에뮬레이션하기 위해 QEMU로 전환하여 문제가 해결되었습니다. 이를 위해 VM XML 파일에서 다음 줄을 제거했습니다.<cpu mode='host-passthrough'/>

관련 정보