出于未知原因收到 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

问题似乎是中断的结束没有被正确传达。

对于 libvirt,请确保eoi已启用:

<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 后开始的(当前任务是 Collat​​z 猜想)。我目前允许 BOINC 抢占 99% 的 CPU。

因此,我对这些消息的原因的猜测是 CPU 已饱和并且没有足够的时间来正确处理(硬件)中断。在您的特定情况下,其他一些过程或外部原因可能是罪魁祸首。 YMMV。

答案3

这是不可屏蔽中断 (NMI),通常由系统上的硬件事件触发。在这种情况下,看起来特定的 NMI 没有配置,尽管它已经收到了 NMI,但它不知道如何处理它,所以它只是忽略它。

你还应该做什么?

  • 如果您只是想删除该消息,那么您可以尝试通过配置 syslogd 从命令行隐藏它。
  • 如果您想解决后台问题,那么您需要对计算机上发生的更改进行分类(例如添加新硬件/驱动程序?)。

答案4

我在使用 PC-Q35 硬件类型运行 Debian 9.0 (Stretch) 的 KVM 虚拟机客户机上看到了这种行为。主机是AMD Turion。

网上建议了几种解决方案(参见,例如,这个线程),包括以下内容

  1. 切换到 QEMU 模拟 CPU,而不是使用 CPU 直通。
  2. 更改 KVM 时钟计时器(添加<timer name='kvmclock' present='no'/>到来宾)。
  3. 禁用来宾中的 ACPI 支持。

就我而言,切换到 QEMU 模拟 CPU 已经解决了问题。为此,我从 VM XML 文件中删除了以下行:<cpu mode='host-passthrough'/>

相关内容