Ubuntu 20.04.3 LTS systemd-udevd 带有 CD/DVD rom 驱动器,CPU 使用率高

Ubuntu 20.04.3 LTS systemd-udevd 带有 CD/DVD rom 驱动器,CPU 使用率高

我知道这个问题似乎在涉及 wifi 或蓝牙或 nvidia 时被问到很多次,但我正在努力解决与 cd-rom/dvd-rom 相关的问题。

我在 Parallels VM 上运行 Ubuntu,没有物理 DVD 也没有连接的 ISO 映像。

systemd-udevd 在非重复时间后 CPU 占用率上升到 100%,也就是说,它何时启动并不一致。它似乎是在我几天前更新 Ubuntu-Base 时启动的。使用 udevadm monitor 我看到以下内容:

KERNEL[26618.989007] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
KERNEL[26619.020644] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
KERNEL[26619.077203] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
KERNEL[26619.200954] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
UDEV  [26619.233814] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
KERNEL[26619.281478] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
KERNEL[26619.312935] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
KERNEL[26619.360996] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
KERNEL[26619.478767] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
UDEV  [26619.504989] change   /devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)

不断重复。
与 ata4 和 sr0 相关的 dmesg 信息:

[    2.165687] ata4: SATA max UDMA/133 abar m8192@0xf0200000 port 0xf0200180 irq 30

[    2.808027] ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    2.808812] ata4.00: ATAPI: Virtual DVD-ROM [1], FWR1, max UDMA/25
[    2.810047] ata4.00: configured for UDMA/25
[    2.811856] scsi 3:0:0:0: CD-ROM                     Virtual DVD-ROM  R103 PQ: 0 ANSI: 5
[    2.872450] sr 3:0:0:0: [sr0] scsi3-mmc drive: 44x/44x cd/rw xa/form2 cdda tray
[    2.872465] cdrom: Uniform CD-ROM driver Revision: 3.20
[    2.932438] sr 3:0:0:0: Attached scsi CD-ROM sr0

查看 journalctl | grep 'systemd-udevd' 我看到以下可能有用的信息:

Sep 09 17:15:01 ubuntu-vm systemd[1]: systemd-udevd.service: Watchdog timeout (limit 3min)!
Sep 09 17:15:01 ubuntu-vm systemd[1]: systemd-udevd.service: Killing process 205157 (systemd-udevd) with signal SIGABRT.
Sep 09 17:15:01 ubuntu-vm systemd-udevd[205158]: sr0: Spawned process 'cdrom_id --eject-media /dev/sr0' [205517] is taking longer than 59s to complete
Sep 09 17:15:01 ubuntu-vm systemd-udevd[205158]: sr0: Spawned process 'cdrom_id --eject-media /dev/sr0' [205517] timed out after 2min 59s, killing
Sep 09 17:15:01 ubuntu-vm systemd-udevd[205158]: sr0: Process 'cdrom_id --eject-media /dev/sr0' terminated by signal KILL.
Sep 09 17:15:01 ubuntu-vm systemd-udevd[205158]: sr0: Failed to wait for spawned command 'cdrom_id --eject-media /dev/sr0': Input/output error
Sep 09 17:15:01 ubuntu-vm systemd-udevd[205158]: sr0: Failed to execute 'cdrom_id --eject-media /dev/sr0', ignoring: Input/output error
Sep 09 17:15:02 ubuntu-vm systemd[1]: systemd-udevd.service: Main process exited, code=dumped, status=6/ABRT
Sep 09 17:15:02 ubuntu-vm systemd[1]: systemd-udevd.service: Killing process 205158 (systemd-udevd) with signal SIGKILL.
Sep 09 17:15:02 ubuntu-vm systemd[1]: systemd-udevd.service: Killing process 205192 (systemd-udevd) with signal SIGKILL.
Sep 09 17:15:02 ubuntu-vm systemd[1]: systemd-udevd.service: Failed with result 'watchdog'.
Sep 09 17:15:02 ubuntu-vm systemd[1]: systemd-udevd.service: Scheduled restart job, restart counter is at 5.
Sep 09 17:15:02 ubuntu-vm systemd[1]: systemd-udevd.service: Found left-over process 205158 (systemd-udevd) in control group while starting unit. Ignoring.

该消息序列偶尔会出现,看起来像是正在启动一个弹出 CD-ROM 的过程。sr0 尚未安装。

我可以终止该进程,但它最终会重新启动,我不想继续这样做。我也不想用“创可贴”来阻止它,因为我可能想安装 DVD 或 ISO 映像,但无论如何,最好能找出导致系统开始使用 sr0 的原因并停止它。

我并不是非常精通 Linux - 我只是将它用于特定的开发工具 - 并且我已经调查了我能调查到的一切,但如果能得到任何帮助我都会非常感激。

编辑:终止进程是一种临时解决方法,因为它会立即重新启动,尽管 CPU 百分比较低,但从那里开始加速。运行以下命令(按照 udevadm man 条目)将停止此问题:

sudo systemctl stop systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket
sudo systemctl start systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket

所以感觉这可能是启动顺序的问题?也许是在与 CD-ROM 设备交互之前没有初始化某些东西?有什么办法吗?

谢谢,

安德鲁

答案1

谁知道到底是什么导致了这种情况的发生。由于没有回应,这就是我所做的。

在 /usr/local/bin 中创建一个脚本并使其可执行:

#!/bin/bash
# Restart systemd-udevd to prevent runaway CD-ROM service

systemctl stop systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket
sleep 1

systemctl start systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket

在 /etc/systemd/system 中创建 Systemctl 服务:

[Unit]
Description=Stop CD-ROM runaway service
After=graphical.target

[Service]
Type=simple
ExecStart=/usr/local/bin/stopCdRomNotifications.sh

[Install]
WantedBy=default.target

然后使用以下命令启用它:

sudo systemctl enable [myscriptname]

现在,在启动时,失控的 systemd-udevd 进程会停止,然后以非失控状态重新启动。如果脚本中没有 sleep 1 语句,它将无法工作:我推测当要求重新启动时它处于“即将停止”状态,因此它不必先停止!毫秒或微秒的延迟可能会起作用,我没有费心尝试。

在我看来,这有点像是一块创可贴,但我不明白为什么会突然发生这种情况,除非可能是 Ubuntu-Base 的最新更新导致了这种情况。嗯,Linux。

编辑:我现在知道了根本原因,但没有一劳永逸的解决办法。这个问题是由 VM 的 Parallels 配置和内核版本 5.11.0.34 引起的。如果我将 VM 配置为没有连接的 CD/DVD,则“失控”的 systemd-udevd 进程将启动;如果我使用附加的 ISO 映像对其进行配置,则不会启动。启动到早期版本的内核不会出现任何问题,是这个内核版本加上“断开连接”的 CD/DVD 导致了问题。目前的解决办法是使用连接的 ISO 映像配置 VM。这还可以修复启动 VM 时 2 分钟的启动延迟问题。

相关内容