为什么 kworker cpu 使用率这么高?

Yus*_*suf 41 performance cpu 12.04

我最近在我的三星笔记本电脑和 Windows 7 上安装了 Ubuntu 12.04。每当我使用 Ubuntu(即使它空闲时)kworker 使用 8 核之一的几乎 90%。即使它并没有真正影响我的使用,它也会困扰我,我担心它可能会损害我的处理器。我什至尝试安装另一个 Linux 发行版(Linux Mint),而 kworker 导致了同样的问题。所以我不知道该怎么办。我将衷心感谢您的帮助。

在此处输入图片说明

小智 68

相反,我认为这种 CPU 使用率不正常,与众所周知的 kworker 错误有关:https ://bugs.launchpad.net/ubuntu/+source/linux/+bug/887793

对我和其他许多人来说,解决方案首先是找出导致坏事的“gpe”,例如:

grep . -r /sys/firmware/acpi/interrupts/
Run Code Online (Sandbox Code Playgroud)

并检查高值(我的是 gpe13 - 具有类似 200K 的值 - 因此,如果不同,您必须相应地更改它)。在那之后:

~ cp /sys/firmware/acpi/interrupts/gpe13 /pathtobackup
~ crontab -e
Run Code Online (Sandbox Code Playgroud)

添加这一行,因此它将在每次启动/重启时执行:

@reboot echo "disable" > /sys/firmware/acpi/interrupts/gpe13
Run Code Online (Sandbox Code Playgroud)

保存/退出。然后,使其在从挂起唤醒后也能工作:

~ touch /etc/pm/sleep.d/30_disable_gpe13
~ chmod +x /etc/pm/sleep.d/30_disable_gpe13
~ vim /etc/pm/sleep.d/30_disable_gpe13
Run Code Online (Sandbox Code Playgroud)

添加这个东西:

#!/bin/bash
case "$1" in
    thaw|resume)
        echo disable > /sys/firmware/acpi/interrupts/gpe13 2>/dev/null
        ;;
    *)
        ;;
esac
exit $?
Run Code Online (Sandbox Code Playgroud)

保存/退出,完成。

测试和工作:

Ubuntu 12.10 on Samsung Chronos 7 series - Model no. NP700Z7C --
Ubuntu 16.04.2 on Clevo - Model no. P650RS --
Run Code Online (Sandbox Code Playgroud)

  • 而不是设置文件 /etc/pm/sleep.d/30_disable_gpe13 我编辑了文件 /etc/rc.local 并添加了“echo disable > /sys/firmware/acpi/interrupts/gpe13 2>/dev/null” (在退出 0 之前),现在它正在工作,谢谢 (3认同)
  • 完美的!这真的适用于我的带有 Ubuntu 12.04 LTS 的笔记本电脑! (2认同)
  • 14.10 仍然存在这个问题(MacbookPro Retina,2013 年末)。找到`gpe06:94815545`和`gpe17:10621`,禁用`gpe06`后,kworker不再出现在CPU使用列表的顶部,然后我可以看到电源指示灯*增加*剩余时间关于电池电量。 (2认同)
  • 非常感谢你做的这些!我遇到了这个问题.. 每次我打开一个 torrent 应用程序时,CPU 使用率总是从 0 到 100%。我的第一个想法是这是一个 NTFS 问题.. 但不是。KTORRENT 为 90% 并使用了您的指南...现在一切正常:-) (2认同)
  • 这个答案是救命稻草。很遗憾看到一个**严重** 9 岁的错误仍然存​​在,并且显然甚至影响了最新版本的 Ubuntu。 (2认同)

Ank*_*kit 2

CPU 使用率似乎正常,只有 1 个 CPU(CPU1)使用率较高。总共有 3 个进程处于运行状态,其中两个是 kworker 和 gnome-system-mo(您添加的顶部命令屏幕中的前 2 个进程)。

“kworker”是内核工作线程的占位符进程,它执行内核的大部分实际处理,特别是在存在中断、计时器、I/O 等的情况下。这些通常对应于绝大多数已分配的“系统”运行进程的时间。它不是可以以任何方式从系统中安全删除的东西,并且与 nepomuk 或 KDE 完全无关(除了这些程序可能会进行系统调用,这可能需要内核执行某些操作)

有关 kworker 的更多信息,请查看以下链接:-什么是 KWorker 及其重要性