更新

更新

感谢您查看此内容。

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 

设置 - ubuntu 16.10。 4.8.0-41-通用。基于现代英特尔的笔记本电脑,带有 Nvidia 驱动程序和不太完美的 wifi。请告诉我,我可以为您提供您需要的任何信息。我的这些工作可以接受,我看不出有任何理由相信这些涉及到这个问题。

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

我已经拿了一些性能报告

sudo perf record -a -g sleep 10
sudo perf report

有了一些结果

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!

我检查了 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

但这不起作用!

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

有任何想法吗?!

更新

在提交这个问题之前我一直在使用Kworker,它是什么?为什么它占用如此多的 CPU?作为参考。因此,我尝试禁用/卸载长时间运行的进程,例如 dropbox、insync(谷歌驱动器)、crashplan、keybase、Variety 背景、多重加载指示器、psensor、guake。 (我觉得大多数时候我的设置都非常流畅......)但似乎没有任何帮助。

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

也许 kworker 实际上是笔记本电脑过热 -> cpu 节流 + cpu 风扇管理的结果。不是原因。正如建议的防止CPU过热所以我只是使用一些压缩空气来清理风扇(我认为这对于一台只有 9 个月大的笔记本电脑来说不会是一个问题,但实际上有一点灰尘)并调查了 heat-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

看起来对我来说不是特别有帮助。

很久以后....

我看到这个答案仍然有很多人浏览,所以我想我应该添加我记得的其他发生的事情。我运行一台配备 Nvidia GPU 的 Aspire V 15 Nitro 592G 笔记本电脑。 wifi 不稳定,麦克风无法工作,Nvidia 驱动程序导致 gnome shell 和显示器反复崩溃等等。这不是最好的 ubuntu 机器,尽管它在工作时非常强大。老实说,我现在运行的是 Ubuntu 17.10,但在让这台机器工作时我仍然遇到重大问题。

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

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

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

答案1

这个问题似乎被放弃了,因为它不再更新了,但无论如何我都会尝试一下:我见过很多发生过度中断的情况,从而减慢了机器的速度。这可以用 来验证grep . -r /sys/firmware/acpi/interrupts/

有关的: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/887793 https://bugzilla.kernel.org/show_bug.cgi?id=53071 https://forum.ubuntuusers.de/topic/kworker-cpu-load/(德语)

答案2

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

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

如果有什么事情触发了这个问题,我们必须知道它是什么。我见过一些由磁盘 IO 激增引发 CPU 使用率过高的情况,调整/proc/sys/vm/与缓存相关的参数有很大帮助。

相关内容