kworker
进程消耗一个CPU的75%。有问题的kworker
线程与 ACPI 相关:
sudo cat /proc/THE_PID_OF_KWORKER_PROCESS/stack
[<ffffffff85c0c705>] acpi_ns_evaluate+0x1bc/0x23a
[<ffffffff85bffe09>] acpi_ev_asynch_execute_gpe_method+0x98/0xff
[<ffffffff85be4e30>] acpi_os_execute_deferred+0x10/0x20
[<ffffffff8588dc21>] process_one_work+0x181/0x370
[<ffffffff8588de5d>] worker_thread+0x4d/0x3a0
[<ffffffff85893f1c>] kthread+0xfc/0x130
[<ffffffff8588de10>] process_one_work+0x370/0x370
[<ffffffff85893e20>] kthread_create_on_node+0x70/0x70
[<ffffffff858791ba>] do_group_exit+0x3a/0xa0
[<ffffffff85e6a2b5>] ret_from_fork+0x25/0x30
[<ffffffffffffffff>] 0xffffffffffffffff
所以我开始调试使用一些与 acpi 相关的内核参数重新启动, 例如:
acpi=off : Completely solves the high cpu usage, but computer no longer suspends.
acpi=ht : no effect, still high cpu usage
pci=noacpi : not booting at all
pnpacpi=off : no effect, still high cpu usage
noapic : worse, 100% cpu usage
nolapic : worse, 100% cpu usage
uname -a
:Linux 4.13.0-1-amd64 #1 SMP Debian 4.13.4-1 (2017-10-01) x86_64 GNU/Linux
我的根文件夹磁盘布局是:BTRFS
over LVM
over LUKS
。
我怎样才能找到问题的根源?
更新
我没有使用外部硬盘驱动器,它使用 DVD 外壳连接到笔记本电脑。
今天我重新连接了驱动器,kworker 再次消耗了过多的 CPU。请注意,我没有从外部驱动器挂载分区,只是附加导致了 CPU 使用率。
答案1
当我检查 ACPI 中断时,我注意到gpe6F
触发计数非常高:
root@HOST:~# grep . -r /sys/firmware/acpi/interrupts/
/sys/firmware/acpi/interrupts/ff_gbl_lock: 0 EN enabled unmasked
/sys/firmware/acpi/interrupts/gpe15: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe4F: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe43: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe7D: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe71: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe05: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe3F: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe33: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe6D: 0 disabled unmasked
/sys/firmware/acpi/interrupts/gpe61: 0 EN enabled unmasked
/sys/firmware/acpi/interrupts/gpe2F: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe23: 0 EN enabled unmasked
/sys/firmware/acpi/interrupts/gpe5D: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe51: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe1F: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe13: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe4D: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe41: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe7B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe0F: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe03: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe3D: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe31: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe6B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe2D: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe21: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe5B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe1D: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe78: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe11: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe4B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/ff_pwr_btn: 0 EN enabled unmasked
/sys/firmware/acpi/interrupts/ff_slp_btn: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe0D: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe68: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe01: 0 invalid unmasked
/sys/firmware/acpi/interrupts/ff_pmtimer: 0 STS invalid unmasked
/sys/firmware/acpi/interrupts/gpe3B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe58: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe2B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe48: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe1B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe76: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe38: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe0B: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe66: 4 EN enabled unmasked
/sys/firmware/acpi/interrupts/gpe28: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe56: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe18: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe46: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe74: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe08: 0 invalid unmasked
/sys/firmware/acpi/interrupts/sci: 819678
/sys/firmware/acpi/interrupts/gpe36: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe64: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe26: 0 invalid unmasked
/sys/firmware/acpi/interrupts/error: 0
/sys/firmware/acpi/interrupts/gpe54: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe16: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe44: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe7E: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe72: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe06: 0 invalid unmasked
/sys/firmware/acpi/interrupts/ff_rt_clk: disabled unmasked
/sys/firmware/acpi/interrupts/gpe34: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe6E: 262969 EN enabled unmasked
/sys/firmware/acpi/interrupts/gpe62: 0 EN enabled unmasked
/sys/firmware/acpi/interrupts/gpe24: 0 EN enabled unmasked
/sys/firmware/acpi/interrupts/gpe5E: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe52: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe14: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe4E: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe42: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe7C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe70: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe04: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe3E: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe32: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe6C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe60: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe2E: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe22: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe5C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe50: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe1E: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe79: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe12: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe4C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe40: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe7A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe0E: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe69: 0 disabled unmasked
/sys/firmware/acpi/interrupts/gpe02: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe3C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe30: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe6A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe59: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe2C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe20: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe5A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe49: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe1C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe77: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe10: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe4A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe39: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe0C: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe67: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe00: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe3A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe29: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe57: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe2A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe19: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe47: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe1A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe75: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe09: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe37: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe0A: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe65: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe27: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe55: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe17: 0 STS invalid unmasked
/sys/firmware/acpi/interrupts/gpe45: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe7F: 0 invalid unmasked
/sys/firmware/acpi/interrupts/sci_not: 101
/sys/firmware/acpi/interrupts/gpe73: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe07: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe35: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe6F: 560719 STS enabled unmasked
/sys/firmware/acpi/interrupts/gpe63: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe25: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe5F: 0 invalid unmasked
/sys/firmware/acpi/interrupts/gpe_all: 823692
/sys/firmware/acpi/interrupts/gpe53: 0 invalid unmasked
我禁用了它:
root@HOST:~# echo "disable" > /sys/firmware/acpi/interrupts/gpe6F
一切都恢复正常:
Linux 4.9.0-6-amd64 (HOST) 05/01/2018 _x86_64_ (4 CPU)
12:30:27 PM CPU %user %nice %system %iowait %steal %idle
12:30:30 PM all 6.88 0.00 1.26 0.17 0.00 91.69
12:30:33 PM all 6.45 0.00 1.17 0.17 0.00 92.20
12:30:36 PM all 7.15 0.00 1.01 0.34 0.00 91.51
Average: all 6.83 0.00 1.15 0.22 0.00 91.80
答案2
kworker
由加密(LUKS)使用,因此您将看到它在磁盘 IO 上消耗 CPU(这可以是后台 FS 维护)。你应该运行:
cryptsetup benchmark
查看是否缺少硬件加速。
答案3
我在旧 Macbook 2006 中运行 Lubuntu 20.10、5.8 内核时遇到类似问题。在我的情况下,解决方案是使用启动参数屏蔽 gpe17
我将启动参数添加acpi_mask_gpe=0x17
到 GRUB 并重新启动。
添加acpi_mask_gpe=0x17
到/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT 行,然后运行update-grub
并重新启动。
这样就解决了CPU占用率高的问题。
我发现这个命令有问题:grep . -r /sys/firmware/acpi/interrupts/
问题:/sys/firmware/acpi/interrupts/gpe17: 3491042 EN enabled unmasked
Peter Nowee 在他的回答中提供了解决方案:在启动时禁用 GPE ACPI 中断?