Ubuntu 16.04 kworker 持续使用高 CPU

Ubuntu 16.04 kworker 持续使用高 CPU

在 Ubuntu 16.04 计算机上,我发现它kworker持续占用了 80% 的 CPU。

我生成了一个性能报告:

  • sudo apt-get install linux-tools-common linux-tools-$(uname -r)
  • 在所有 CPU 上记录大约 10 秒的回溯sudo perf record -g -a sleep 10
  • 使用 查看sudo perf report

排名前几的结果如下:

Samples: 47K of event 'cycles:ppp', Event count (approx.): 38282161158
  Children      Self  Command          Shared Object                  Symbol
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] ret_from_fork
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] kthread
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] worker_thread
+   77.00%     0.13%  kworker/3:3      [kernel.kallsyms]              [k] process_one_work
+   76.26%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] rpm_idle
+   75.98%     0.06%  kworker/3:3      [kernel.kallsyms]              [k] rpm_suspend
+   75.97%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] pm_runtime_work
+   75.84%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] __rpm_callback
+   75.82%     0.01%  kworker/3:3      [kernel.kallsyms]              [k] usb_runtime_idle
+   75.76%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] __pm_runtime_suspend
+   75.64%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] rpm_callback
+   75.61%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] usb_runtime_suspend
+   75.51%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] usb_suspend_both
+   73.51%     0.15%  kworker/3:3      [kernel.kallsyms]              [k] usb_control_msg
+   71.97%     0.14%  kworker/3:3      [kernel.kallsyms]              [k] usb_start_wait_urb
+   68.38%     0.05%  kworker/3:3      [kernel.kallsyms]              [k] usb_submit_urb
+   68.33%     0.30%  kworker/3:3      [kernel.kallsyms]              [k] usb_submit_urb.part.8
+   67.75%     0.82%  kworker/3:3      [kernel.kallsyms]              [k] usb_hcd_submit_urb
+   60.96%    60.41%  kworker/3:3      [kernel.kallsyms]              [k] xhci_hub_control
+   55.99%     0.12%  kworker/3:3      [kernel.kallsyms]              [k] hub_suspend
+   54.97%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] set_port_feature
+   19.36%     0.01%  kworker/3:3      [kernel.kallsyms]              [k] usb_resume_interface.isra.8
+   19.35%     0.02%  kworker/3:3      [kernel.kallsyms]              [k] hub_resume
+   19.32%     0.14%  kworker/3:3      [kernel.kallsyms]              [k] hub_activate
+   18.78%     0.08%  kworker/3:3      [kernel.kallsyms]              [k] hub_ext_port_status
+   11.13%     0.00%  ksoftirqd/3      [kernel.kallsyms]              [k] ret_from_fork
+   11.13%     0.00%  ksoftirqd/3      [kernel.kallsyms]              [k] kthread
+   10.44%     0.51%  ksoftirqd/3      [kernel.kallsyms]              [k] smpboot_thread_fn

我不知道如何重现。重启后它就消失了。发生了什么事?

答案1

同样的问题出现在 Dell XPS 笔记本电脑和内核 4.4.0-130 上

我通过禁用修复了这个问题内核中的动态USB电源管理

usbcore.autosuspend=-1在内核的启动命令行中添加了:

GRUB_CMDLINE_LINUX_DEFAULT="<existing stuff> usbcore.autosuspend=-1"
  • 要永久执行此操作,请打开 grub 配置文件

    sudo nano /etc/default/grub
    

并添加上面描述的标志。

  • 接下来你必须通过以下方式更新你的 grub

    sudo update-grub
    
  • 重启后,一切都会好起来,繁忙的 CPU 现在可以自由地做一些有用的事情了 :)

当您连接 USB 设备时,禁用动态 PM 可能会影响电池寿命,但很少有 USB 设备能够处理这种模式......

答案2

我以前在戴尔笔记本电脑上也遇到过类似的问题。我了解到这是由于内核的一个错误造成的,可以通过将一些值写入某个文件来刷新一些内核缓存来解决/sys,但我怀疑这对您没有帮助。

我知道kworker进程无法被杀死。如果我相信 Askubuntu/Unix 上对同一问题的其他答案,那么这些kworker进程就是与内核活动相对应的占位符进程。

下面提出的解决方案按最明显、最有可能产生结果(如果尚未尝试)到最不可能的顺序排列。

如果您还没有这样做,我建议您将内核更新到存储库的最新版本(sudo apt update)。更新内核通常需要重新启动才能看到效果。

否则,您可以尝试安装 Ubuntu 18.04,其内核版本为 4.15.0-22 并且可能集成了修复程序。

如果您已经用 Google 搜索过您的问题,那么您可能已经找到了与您的描述相符的错误报告。您应该仔细阅读评论,它们有时包含解决方案或变通方法。下面的链接似乎与您的非常接近,但它有点令人感兴趣,因为修复现在应该已经进入 Ubuntu 内核(评论 #18)。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488426

当我遇到这个错误时,我没有尝试使用 CPU 限制应用程序,例如cpulimitcputoolsudo apt install cpulimitsudo apt install cputool)。我不知道这种方法是否有可能奏效。我怀疑它能否在这种非标准流程中发挥作用。


注意:您可能希望将输出添加uname -mr到您的问题以及与 Linux 内核相关的未来问题中。

如果发现某些有用的方法,请写下答案。

相关内容