Kworker 是 100% - 我想我已经尝试了一切!

jbb*_*med 8 cpu ubuntu kernel linux-kernel

感谢您检查这个。

jonathan@melange:~$ top

top - 05:21:08 up 44 min,  2 users,  load average: 1.21, 1.68, 1.98
Tasks: 351 total,   2 running, 349 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.3 us, 14.0 sy,  2.1 ni, 70.4 id,  8.9 wa,  0.0 hi,  0.3 si,  0.0 st
GiB Mem :   15.579 total,    0.173 free,    4.141 used,   11.264 buff/cache
GiB Swap:   15.910 total,   15.868 free,    0.042 used.   11.014 avail Mem 

  PID  PPID   UID USER     RUSER    TTY          TIME+  %CPU %MEM S COMMAND                                                                                                                                   
   67     2     0 root     root     ?         22:22.40 100.0  0.0 R kworker/0:1 
Run Code Online (Sandbox Code Playgroud)

设置 - ubuntu 16.10。4.8.0-41-通用。基于现代英特尔的笔记本电脑,带有 Nvidia 驱动程序,但无线网络不是很完美。让我知道,我可以为您提供您需要的任何信息。我有这些工作可以接受,我看不出有任何理由相信这些与这个问题有关。

我实际上已经在 askubuntu 上问过这个问题,上周在 Freenode`#ubuntu 上问过几次,但没有人会回答我的问题:(

我已经采取了一些性能报告

sudo perf record -a -g sleep 10
sudo perf report
Run Code Online (Sandbox Code Playgroud)

有一些结果

Samples: 92K of event 'cycles:ppp', Event count (approx.): 58330337004406                                                                                                                                     
  Children      Self  Command          Shared Object                        Symbol                                                                                                                           ?
+   94.27%     0.00%  swapper          [kernel.kallsyms]                    [k] cpu_startup_entry                                                                                                            ?
+   94.27%     0.00%  swapper          [kernel.kallsyms]                    [k] start_secondary                                                                                                              ?
+   77.29%     0.00%  swapper          [kernel.kallsyms]                    [k] schedule_preempt_disabled                                                                                                    ?
-   77.29%    77.29%  swapper          [kernel.kallsyms]                    [k] __schedule                                                                                                                   ?
     77.29% start_secondary                                                                                                                                                                                  ?
        cpu_startup_entry                                                                                                                                                                                    ?
      - schedule_preempt_disabled                                                                                                                                                                            ?
         - 77.29% schedule                                                                                                                                                                                   ?
              __schedule                                                                                                                                                                                     ?
+   77.29%     0.00%  swapper          [kernel.kallsyms]                    [k] schedule                                                                                                                     ?
+   16.99%     0.00%  swapper          [kernel.kallsyms]                    [k] call_cpuidle                                                                                                                 ?
+   16.99%     0.00%  swapper          [kernel.kallsyms]                    [k] cpuidle_enter                                                                                                                ?
+   16.99%     0.00%  swapper          [kernel.kallsyms]                    [k] cpuidle_enter_state                                                                                                          ?
-   16.99%    16.99%  swapper          [kernel.kallsyms]                    [k] intel_idle                                                                                                                   ?
     16.98% start_secondary                                                                                                                                                                                  ?
        cpu_startup_entry                                                                                                                                                                                    ?
        call_cpuidle                                                                                                                                                                                         ?
      - cpuidle_enter                                                                                                                                                                                        ?
         - 16.98% cpuidle_enter_state                                                                                                                                                                        ?
              intel_idle                                                                                                                                                                                     ?
+    5.65%     0.00%  pool             [unknown]                            [.] 0000000000000000                                                                                                             ?
+    5.65%     5.65%  pool             libc-2.24.so                         [.] re_compile_internal                                                                                                          ?
+    5.65%     0.00%  pool             [unknown]                            [.] 0x00007f049804d628                                                                                                           ?
+    5.65%     0.00%  pool             [unknown]                            [.] 0x00007f049804d6a8                                                                                                           ?
+    5.65%     0.00%  pool             [unknown]                            [.] 0x00007f049804d3d8                                                                                                           ?
+    5.65%     0.00%  pool             [unknown]                            [.] 0x00007f049804d768                                                                                                           ?
Cannot load tips.txt file, please install perf!
Run Code Online (Sandbox Code Playgroud)

我已经检查了 dmesg、过热消息(这就是我在这里的原因)以及其他一些关于 MSFT0101:00 的消息,我认为这与内核无法识别启用了 bios 的 TPM 模块有关。我认为这在这件事上应该是微不足道的。

还有一个关于 kworker 线程的问题,根据这个线程建议以下内容

$ echo workqueue:workqueue_queue_work > /sys/kernel/debug/tracing/set_event
$ cat /sys/kernel/debug/tracing/trace_pipe > out.txt
(wait a few secs)
^C
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

jonathan@melange:~$ sudo mount -t debugfs nodev /sys/kernel/debug
mount: nodev is already mounted or /sys/kernel/debug busy
jonathan@melange:~$ sudo echo workqueue:workqueue_queue_work > /sys/kernel/debug/tracing/set_event
bash: /sys/kernel/debug/tracing/set_event: Permission denied
jonathan@melange:~$ sudo cat /proc/67/stack
[<ffffffffffffffff>] 0xffffffffffffffff
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?!

更新

在提交这个问题之前,我一直在使用Kworker,它是什么,为什么它占用了这么多 CPU?作为参考。所以我尝试禁用/卸载长时间运行的进程,例如 dropbox、insync(谷歌驱动器)、crashplan、keybase、Variety background、multiload indicator、psensor、guake。(我觉得大部分时间我都有一个非常漂亮的设置......)但似乎没有任何帮助。

还潜伏着其他问题,暗示 wifi、nvidia 驱动程序或 USB 驱动程序出现故障。但我的日志中也没有任何暗示这一点。值得庆幸的是,这些解决方案几乎总是简单地找到更新的 nvidia 驱动程序、更新内核或“处理它”。我的笔记本电脑已经是最新的了,我没有企业理由留在 16.04 并且我已经激活了 nvidia ppa,就像英特尔驱动程序一样,所以这没有太大帮助。

也许kworker实际上是笔记本电脑过热的结果-> cpu节流+ cpu风扇管理。不是原因。正如Stop cpu from overheating所建议的那样,我刚刚使用了一些压缩空气来清理风扇(没想到这在仅 9 个月大的笔记本电脑上会出现问题,但实际上有一点灰尘)并调查了Thermal-conf.xml 表明风扇在 55°C 时启动(尽管我仍在研究我在这里可以做的事情)

认为这实际上可能是解决方案。将很快回来报告。

更新 2

因此,执行 Acer bios 更新完全破坏了与我的安全启动设置相关的所有内容并损坏了 efi 文件,因此我花了几天时间来研究如何重新生成 ubuntu efi 密钥和 windows efi 密钥。

我尝试清除灰尘,这两天确实有帮助,直到我开始解决 bios 问题。

但是 kworker 回来了(是的,据我所知,它是一样的)。我现在也有更多的信息。我可以看到 cpu 没有节流,而是保持在最大值。风扇正在运行,但设备仅位于 60 度附近,所以我不会称这为严重过热。

来自另一个线程的命令需要提升到 root 用户,而不仅仅是使用 sudo。所以 sudo su 然后获取堆栈跟踪给出以下内容。

[<ffffffff98a9dcea>] worker_thread+0xca/0x500
[<ffffffff98aa40d8>] kthread+0xd8/0xf0
[<ffffffff992a071f>] ret_from_fork+0x1f/0x40
[<ffffffffffffffff>] 0xffffffffffffffff
Run Code Online (Sandbox Code Playgroud)

看起来对我没有特别的帮助。

很久以后……

我看到这个答案仍然有很多观点,所以我想我会添加我记得的其他事情。我使用 Nvidia gpu 运行 Aspire V 15 Nitro 592G 笔记本电脑。wifi 不稳定,麦克风不工作,Nvidia 驱动程序导致 gnome 外壳和显示器反复崩溃等等。这不是最好的 ubuntu 机器,尽管它在工作时非常强大。老实说,我现在运行的是 Ubuntu 17.10,但我仍然在使这台机器工作时遇到了重大问题。

我在评论中写道,清洁风扇似乎有所帮助。这当然让事情变得更安静。但我怀疑它实际上是以下内容的组合:

  • Tracker(全文搜索守护进程)-> 疯狂的资源猪
  • 当时的 wifi 驱动程序很糟糕
  • 品种(壁纸切换器)+ 双显示器 + nvidia + gnome shell -> 不可靠的显示器设置和 gnome shell 上的大量内存泄漏,
  • multiload shell 扩展也是内存泄漏

我意识到这对遇到不同问题的新用户没有帮助。也许有一天事情会更容易诊断,直到那时;祝你好运!

Dmi*_*yev 2

我相信通过以/sys/kernel/debug/tracing/set_eventroot 身份操作可以轻松解决“权限被拒绝”错误。

另一个想法是弄清楚你的问题是否从一开始就存在,或者是什么触发了它。在第一种情况下,最简单的方法是在禁用大多数驱动程序的情况下启动,然后逐一重新启用它们以找到罪魁祸首。

如果有什么东西触发了问题,我们就必须知道它是什么。我见过磁盘 IO 峰值触发 CPU 使用率过高的情况,调整与/proc/sys/vm/缓存相关的参数有很大帮助。