了解“ serial8250:irq4的工作量过多”内核消息


17

dmesg 显示来自serial8250的许多消息:

$ dmesg | grep -i serial
[    0.884481] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    6.584431] systemd[1]: Created slice system-serial\x2dgetty.slice.
[633232.317222] serial8250: too much work for irq4
[633232.453355] serial8250: too much work for irq4
[633248.378343] serial8250: too much work for irq4
...

我以前没有看过此消息。一般是什么意思?我应该担心吗?

(根据我的研究,它不是特定于发行版的,但是如果相关,我会在运行Ubuntu 16.04的EC2实例上看到消息。)


为什么EC2实例需要串行驱动程序?这些串行“端口”连接了什么?(猜想:其他原因引起了很多irq4信号,并且驱动程序感到困惑。解决方案:禁用驱动程序,因为可能不需要)。
dirkt

如果您通过SSH登录并与控制台交互,可能会发生这种情况吗?
PhilippClaßen17年

2
EC2实例中的串行端口是EC2“控制台输出”,目录。
JdeBP

Answers:


20

您的内核或设备驱动程序没有错。问题出在您的机器硬件上。问题在于这是不可能的硬件。

这是困扰至少十年的几个虚拟化平台(至少包括XEN,QEMU和VirtualBox)中的一个错误。问题在于,各种品牌的虚拟机所模拟的UART硬件的行为都不可能,以不可能的快线速度发送字符。对于内核来说,这与有故障的真实 UART硬件是无法区分的,后者在不断为空的输出缓冲区/已满的输入缓冲区引发中断。(存在错误的实际硬件,并且嵌入式Linux专家还会在这里和那里讨论这个问题。)内核将数据推出/拉入数据,而UART立即引发中断,表示已准备好进行更多操作。

H. Peter Anvin在2008年提供了一个修补程序来修复QEMU。您需要询问Amazon EC2何时会赶上。

进一步阅读


1
在2008年发布了补丁?和“当EC2赶上时,您需要问亚马逊”。
KevinY

2

只是添加一个支持JdeBP的数据点:我在XEN VM中已经看到了这一点,而在运行dmesg时才看到它。我的猜测是,当我运行dmesg时,我正在使虚拟UART超载(并表现出上述错误),因为dmesg一次喷出了很多东西。无论如何,对我来说这不是问题,只是红鲱鱼。


我可以报告第三个操作系统设置:Mac Os High Sierra 10.13.6上用于Mac 18.06.1-ce-mac73(26764)的docker中的Debian Stretch Docker容器一个python应用程序)有时会不响应...
Henning
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.