在我的新桌面上,从睡眠状态唤醒后,我的一个 CPU 一直处于 100% 使用率,最初是进程xorg
(4289),现在是 kworker 线程。
我/var/log/syslog
电脑里被这样的消息淹没了(每秒超过 850 行):
Aug 26 17:10:55 mortal kernel: [ 3657.482759] ACPI Error: [PGRT] Namespace lookup failure, AE_NOT_FOUND (20160108/psargs-359)
Aug 26 17:10:55 mortal kernel: [ 3657.482760] ACPI Error: Method parse/execution failed [\_GPE._L6F] (Node ffff8810348d56e0), AE_NOT_FOUND (20160108/psparse-542)
输出top
88 root 20 0 0 0 0 D 94,0 0,0 28:32.44 [kworker/0:1]
4289 root 20 0 418620 164880 68252 S 15,6 0,3 4:27.62 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
3404 root 20 0 258320 3540 1948 S 10,3 0,0 5:31.55 /usr/sbin/rsyslogd
5175 mor 20 0 1348768 63636 46232 S 5,3 0,1 1:34.50 vlc
4497 mor 20 0 486068 33220 25884 S 5,0 0,1 0:17.19 marco
4531 mor 20 0 482184 27524 20684 S 4,0 0,0 0:15.24 /usr/lib/mate-panel/wnck-applet
4709 mor 20 0 1708964 435576 123388 S 4,0 0,7 7:23.20 firefox-esr
4291 root 20 0 273140 5864 4984 S 3,0 0,0 1:35.58 /usr/lib/accountsservice/accounts-daemon
4517 mor 9 -11 574288 12692 9456 S 1,7 0,0 1:07.14 /usr/bin/pulseaudio --start --log-target=syslog
4667 mor 20 0 261672 22152 18844 S 0,7 0,0 0:31.10 gkrellm
7 root 20 0 0 0 0 S 0,3 0,0 0:04.67 [rcu_sched]
1134 root 20 0 0 0 0 S 0,3 0,0 0:00.29 [jbd2/sda2-8]
4432 mor 20 0 406236 26144 20616 S 0,3 0,0 0:00.31 x-session-manager
4493 mor 20 0 1459196 32440 25336 S 0,3 0,0 0:03.45 /usr/bin/mate-settings-daemon
4501 mor 20 0 565268 34848 26120 S 0,3 0,1 0:03.35 mate-panel
4513 mor 20 0 1242952 44264 35320 S 0,3 0,1 0:02.10 caja
4543 mor 20 0 526044 34764 28612 S 0,3 0,1 0:01.08 mate-screensaver
4618 mor 20 0 548024 29876 23360 S 0,3 0,0 0:00.35 /usr/lib/mate-panel/clock-applet
5541 mor 20 0 81856 12128 5672 S 0,3 0,0 0:00.81 xterm
6090 mor 20 0 389372 48044 37352 S 0,3 0,1 0:00.86 keepassx
6291 mor 20 0 42928 3776 3008 R 0,3 0,0 0:00.83 top
6300 mor 20 0 86828 16924 5720 S 0,3 0,0 0:01.08 xterm
1 root 20 0 15820 1800 1632 S 0,0 0,0 0:01.13 init [2]
2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 [kthreadd]
3 root 20 0 0 0 0 S 0,0 0,0 0:00.03 [ksoftirqd/0]
5 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 [kworker/0:0H]
8 root 20 0 0 0 0 S 0,0 0,0 0:00.00 [rcu_bh]
9 root rt 0 0 0 0 S 0,0 0,0 0:00.02 [migration/0]
10 root rt 0 0 0 0 S 0,0 0,0 0:00.00 [watchdog/0]
11 root 20 0 0 0 0 S 0,0 0,0 0:00.00 [cpuhp/0]
12 root 20 0 0 0 0 S 0,0 0,0 0:00.00 [cpuhp/1]
13 root rt 0 0 0 0 S 0,0 0,0 0:00.03 [watchdog/1]
14 root rt 0 0 0 0 S 0,0 0,0 0:00.01 [migration/1]
15 root 20 0 0 0 0 S 0,0 0,0 0:00.00 [ksoftirqd/1]
16 root 20 0 0 0 0 S 0,0 0,0 0:00.00 [kworker/1:0]
这可能是什么原因造成的,我该如何调试它?
答案1
这是一个已知错误在采用 Skylake 芯片组的 Linux 内核中。
我找到了解决办法这里,从而导致症状消失。
发出此命令(以 root 身份运行,如果不是 root,请添加“sudo”):
echo "disable" > /sys/firmware/acpi/interrupts/gpe6F
这将禁用有问题的 ACPI 中断,直到下次启动。如果这种情况经常发生在您身上,并且 BIOS 和内核更新没有删除它,请在内核 bugzilla 上提交新的错误报告。
据报道(评论#20) 与 Asrock H170 Pro4S 上的 BIOS 版本 2.00 配合使用。使用内核 4.5 和 4.6 进行测试。
附录自从我最近升级了 BIOS 固件后,就再也没有遇到过这个问题。但升级几乎让我的机器变砖了,而且花了好一段时间才恢复,所以在决定升级之前,请权衡一下。
答案2
现在,您可以在启动时向内核添加参数,以防止这种情况发生。只需将其添加acpi_mask_gpe=0x6f
到内核启动参数即可。
这取决于你的引导程序。例如,我使用的是 grub(和 Arch),所以我必须将其添加到文件中/etc/default/grub
并用 重建它grub-mkconfig -o /boot/grub/grub.cfg
。以下是 Arch 的 wiki 上的一些说明,但 YMMV:https://wiki.archlinux.org/index.php/kernel_parameters
以下是修复错误的评论,https://bugzilla.kernel.org/show_bug.cgi?id=117481#c23,其中包含指向实际补丁的链接。
答案3
按照https://superuser.com/a/1237529/1771604(你让我的早晨变得美好),这可以作为内核参数添加,这使得抑制启动噪音变得简单。
错误略有不同,但问题和修复相同,只需更改 GPE# 以匹配日志中报告的 GPE 方法。
Feb 09 11:49:06 solus-main kernel: ACPI Error: AE_NOT_FOUND, while evaluating GPE method [_L09] (20220331/evgpe-511)
我测试了更改 /sys/firmware/acpi/interrupts/ 中的值,同时监控 journalctl -xef 的输出以确认警告被抑制:
echo "mask" > /sys/firmware/acpi/interrupts/gpe09
我使用 EFI 启动,Solus 修改内核启动参数可以通过下面的方法实现(确保根据您的情况适当替换相关的 gpe= 值)
echo "acpi_mask_gpe=0x09" > /etc/kernel/cmdline/cmdline.d/40_mycustomparameters.conf && clr-boot-manager update