我的是一台已有 7 年历史的 Dell Inspiron 3542(Intel i5),运行 Linux 已有大约 5 年了。
最近,我在 HDD 插槽中安装了一个额外的 SSD,并使用托盘将 HDD 移动到 DVD 驱动器的位置。然后我在 SSD 上全新安装了 Xubuntu 20.04。我注意到 CPU 0 上的 CPU 使用率很高(~75%),即使 PC 上没有运行任何东西。 top 命令显示 kworker 进程占用 CPU:
184 root 20 0 0 0 0 I 75.7 0.0 17:31.07 kworker/0:2-kacpid
对于此处发布的其他类似问题,通常的解决方案是找出哪个 GPE 导致了太多中断并禁用它。的输出grep . -r /sys/firmware/acpi/interrupts
显示以下具有高值的行:
/sys/firmware/acpi/interrupts/gpe11:11640215 EN STS enabled unmasked
/sys/firmware/acpi/interrupts/sci:11640301
禁用或屏蔽 gpe11echo mask > /sys/firmware/acpi/interrupts/gpe11
会导致系统冻结(显示器、键盘和鼠标变得无响应,如果正在播放任何声音,则声音开始循环,就像 DJ 做某事一样)
禁用或屏蔽 sci 会将 gpe11 和 sci 中断重置为零,但它们会再次开始增加。对CPU使用率没有影响,CPU使用率仍然很高
其他实验和观察:
通常的内核参数更改,例如
acpi=off
和acpi_mask_gpe=0x11
导致启动时出现黑屏从 Live USB 启动的操作系统上也存在此问题
该问题在 Xubuntu 18.04 和 Arch Linux 最新版本 Live USB 上仍然存在
输出
cat /proc/interrupts
如下(截断至 acpi):CPU0 CPU1 CPU2 CPU3 0: 6 0 0 0 IO-APIC 2-edge timer 1: 9379 0 0 0 IO-APIC 1-edge i8042 8: 0 1 0 0 IO-APIC 8-edge rtc0 9: 0 21362967 0 0 IO-APIC 9-fasteoi acpi
on dmesg的相关输出
echo l > /proc/sysrq-trigger
如下[ 2174.058304] CPU: 0 PID: 184 Comm: kworker/0:2 Not tainted 5.11.0-27-generic #29~20.04.1-Ubuntu [ 2174.058305] Hardware name: Dell Inc. Inspiron 3542/0926J6, BIOS A03 05/27/2014 [ 2174.058307] Workqueue: kacpid acpi_os_execute_deferred [ 2174.058309] RIP: 0010:acpi_ns_search_one_scope+0x16a/0x208 [ 2174.058310] Code: 49 89 1f 45 31 c0 b9 10 00 00 00 bf 74 00 00 00 48 c7 c2 b0 e8 ca a0 48 c7 c6 90 e8 ca a0 e8 f3 d9 00 00 31 c0 e9 8f 00 00 00 <48> 8b 5b 20 e9 4c ff ff ff f6 05 7d dc 19 01 04 74 55 f6 05 c3 34 [ 2174.058312] RSP: 0018:ffffb5850051fb80 EFLAGS: 00000212 [ 2174.058313] RAX: 0000000037314547 RBX: ffff8947808f57b0 RCX: 0000000000000010 [ 2174.058314] RDX: ffffffffa0cae8b0 RSI: ffffffffa0cae890 RDI: 0000000000000042 [ 2174.058315] RBP: ffffb5850051fbb0 R08: 0000000000000005 R09: 0000000000000003 [ 2174.058317] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa1a7e880 [ 2174.058318] R13: ffff8947801d1b40 R14: 0000000000000000 R15: ffffb5850051fc60 [ 2174.058319] FS: 0000000000000000(0000) GS:ffff8947aba00000(0000) knlGS:0000000000000000 [ 2174.058320] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 2174.058321] CR2: 00007f4c9b5e4d9c CR3: 0000000069074001 CR4: 00000000001706f0 [ 2174.058322] Call Trace: [ 2174.058323] acpi_ns_search_and_enter+0x347/0x4ca [ 2174.058325] acpi_ns_lookup+0x63e/0x866 [ 2174.058326] acpi_ps_get_next_namepath+0xbc/0x35a [ 2174.058327] acpi_ps_get_next_arg+0x69d/0x79a [ 2174.058328] ? acpi_ut_trace_ptr+0x2b/0x71 [ 2174.058329] acpi_ps_parse_loop+0x4be/0x924 [ 2174.058330] acpi_ps_parse_aml+0x1af/0x550 [ 2174.058331] acpi_ps_execute_method+0x208/0x2ca [ 2174.058332] acpi_ns_evaluate+0x34e/0x4f0 [ 2174.058333] acpi_ev_asynch_execute_gpe_method+0xc0/0x15e [ 2174.058334] acpi_os_execute_deferred+0x1a/0x30 [ 2174.058335] process_one_work+0x220/0x3c0 [ 2174.058336] worker_thread+0x4d/0x3f0 [ 2174.058337] kthread+0x114/0x150 [ 2174.058338] ? process_one_work+0x3c0/0x3c0 [ 2174.058339] ? kthread_park+0x90/0x90 [ 2174.058340] ret_from_fork+0x22/0x30
sudo dmidecode
for的输出0x0011
如下。不确定是否0x0011
对应gpe11
。如果这不是 GPE 编号的工作方式,我可以提供完整的输出。Handle 0x0011, DMI type 10, 6 bytes On Board Device Information Type: Video Status: Enabled Description: Mobile Intel HD Graphics
尝试从 SSD 和 Live USB 中移除 HDD Caddy,系统根本无法启动(陷入内核恐慌)
尝试打开球童上的开关,结果与移除球童相同
尝试进行 BIOS 更新但更新失败。这是一个单独的问题,因为戴尔仅提供用于更新的 EXE 文件
答案1
自己解决了:)
以某种方式让系统在移除硬盘的情况下启动。当我尝试随机的事情时,就发生了这种情况,最近一次是启动 Void Linux 的实时 USB。 CPU 使用率恢复到接近于零
之后我尝试打开球童上的开关,现在系统启动时 CPU 使用率接近于零。