我只是想提出一个问题,因为这个问题似乎已经存在很长一段时间了。
刚才我在 Macbook Pro 上安装了新的 Ubuntu 18.04,我注意到 kworker 占用了大量 CPU:
3411 root 20 0 0 0 0 R 84,4 0,0 6:12.23 kworker/0:0
以下是有关我的设置的一些其他信息:
lsb_release -a
:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
uname -a
:
Linux MacbookPro 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
现在我在 Google 上搜索了这个问题的答案,实际上找到了很多。这个帖子中的答案对我有用:为什么 kworker cpu 使用率这么高?
我所要做的就是禁用它gpe06
,这样占用大量 CPU 的 kworker 进程就消失了。首先,我查找导致高 CPU 负载的 gpe:
grep . -r /sys/firmware/acpi/interrupts/
然后浏览列表并找到占用资源的 gpe 并将其禁用:
cp /sys/firmware/acpi/interrupts/gpe06 /root/gpe06.backup
echo "disable" > /sys/firmware/acpi/interrupts/gpe06
我的问题是,当我启动机器时,该死的 kworker 又开始运行了。我知道每次我都可以手动禁用它,但想知道是否有更好的解决方案?我尝试按照上面链接的 Ask Ubuntu 线程中的说明进行操作,但它似乎是关于如何在启动时运行它的过时指南。
那么,我该如何使其成为永久解决方案,以便我不必在每次启动笔记本电脑时禁用 gpe06?
答案1
根据这个 :https://www.reddit.com/r/Ubuntu/comments/7uwz3r/1604_lts_vs_1710_on_2015_macbook_pro/dto1mtb/
以下“技巧”对我来说很有效(同一台机器,同一问题,同一 gpe):
sudo -s
crontab -e
并在末尾添加以下行:
@reboot echo disable > /sys/firmware/acpi/interrupts/gpe06
答案2
我在一台旧的 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