sun*_*386 9 performance system kernel 16.04
在 Ubuntu 16.04 计算机上,我看到kworker始终占用 80% 的 CPU。
我生成了一个性能报告:
sudo apt-get install linux-tools-common linux-tools-$(uname -r) 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
Run Code Online (Sandbox Code Playgroud)
我不知道如何重现。重启后就消失了。到底是怎么回事?
戴尔 XPS 笔记本电脑和内核 4.4.0-130 上的相同问题
我通过在内核中禁用动态 USB 电源管理来修复它
我usbcore.autosuspend=-1在内核的启动命令行中添加了:
GRUB_CMDLINE_LINUX_DEFAULT="<existing stuff> usbcore.autosuspend=-1"
Run Code Online (Sandbox Code Playgroud)
要永久执行此操作,请打开 grub 配置文件
sudo nano /etc/default/grub
Run Code Online (Sandbox Code Playgroud)并添加上述标志。
接下来,您必须通过以下方式更新您的 grub
sudo update-grub
Run Code Online (Sandbox Code Playgroud)重新启动后,一切都应该没问题,忙碌的 CPU 现在可以自由做一些有用的事情了 :)
当您连接了 USB 设备时,禁用动态 PM 可能会影响电池寿命,但很少有 USB 设备能够处理这种模式......
小智 0
我曾经在戴尔笔记本电脑上遇到过类似的问题。我读到这是由于内核的错误造成的,可以通过将一些值写入 中的某个文件来刷新一些内核缓存来缓和它/sys,但我怀疑这会对您有所帮助。
我知道kworker进程不能被杀死。如果我相信 Askubuntu/Unix 上同一问题的其他答案,kworker则占位符进程对应于内核的活动。
下面提出的解决方案按照从最明显且可能产生结果(如果尚未尝试过)到不太可能产生结果的顺序进行排序。
如果您还没有这样做,我建议您将内核更新到存储库的最新可用版本 ( sudo apt update)。更新内核通常需要重启才能看到效果。
否则,您可以尝试安装 Ubuntu 18.04,其内核版本为 4.15.0-22,并且可能集成了修复程序。
如果您用谷歌搜索了您的问题,您可能已经找到了与您的描述相匹配的错误报告。您应该仔细阅读评论,它们有时包含解决方案或解决方法。下面的链接似乎与您的链接非常匹配,尽管它有点有趣,因为修复现在应该已经到达 Ubuntu 内核(评论#18)。
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488426
当我遇到这个 bug 时,我没有尝试使用 cpu 限制应用程序,例如cpulimitor cputool( sudo apt install cpulimitor sudo apt install cputool)。我不知道这种方法是否有机会发挥作用。我怀疑它是否可以与这样的非标准流程一起工作。
uname -mr注意:只要与 Linux 内核相关,您可能希望将 的输出添加到您的问题和未来的问题中。
如果您发现有效果,请写下答案。