我正在使用 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 后开始的(当前任务是 Collatz 猜想)。我目前允许 BOINC 抢占 99% 的 CPU。
因此,我对这些消息的原因的猜测是 CPU 已饱和并且没有足够的时间来正确处理(硬件)中断。在您的特定情况下,其他一些过程或外部原因可能是罪魁祸首。 YMMV。
答案3
这是不可屏蔽中断 (NMI),通常由系统上的硬件事件触发。在这种情况下,看起来特定的 NMI 没有配置,尽管它已经收到了 NMI,但它不知道如何处理它,所以它只是忽略它。
你还应该做什么?
- 如果您只是想删除该消息,那么您可以尝试通过配置 syslogd 从命令行隐藏它。
- 如果您想解决后台问题,那么您需要对计算机上发生的更改进行分类(例如添加新硬件/驱动程序?)。
答案4
我在使用 PC-Q35 硬件类型运行 Debian 9.0 (Stretch) 的 KVM 虚拟机客户机上看到了这种行为。主机是AMD Turion。
网上建议了几种解决方案(参见,例如,这个线程),包括以下内容
- 切换到 QEMU 模拟 CPU,而不是使用 CPU 直通。
- 更改 KVM 时钟计时器(添加
<timer name='kvmclock' present='no'/>
到来宾)。 - 禁用来宾中的 ACPI 支持。
就我而言,切换到 QEMU 模拟 CPU 已经解决了问题。为此,我从 VM XML 文件中删除了以下行:<cpu mode='host-passthrough'/>