kworker 大部分时间占用 85% 的 CPU 1!

kworker 大部分时间占用 85% 的 CPU 1!

我正在运行 Ubuntu 18.04、内核 5.4.81,并且kworker/0:1+kac大部分时间使用 85% 的 CPU 1。

以下是一些有用的信息:

  • top输出:

    顶部命令

  • 系统监视器 CPU 负载:

    CPU 负载图

  • perf报告:

    Samples: 56K of event 'cycles', Event count (approx.): 29364654484
      Children      Self  Command          Shared Object                 Symbol
    +   80.07%     0.00%  kworker/0:1-kac  [kernel.kallsyms]             [k] ret_from_fork
    +   80.07%     0.00%  kworker/0:1-kac  [kernel.kallsyms]             [k] kthread
    +   80.07%     0.00%  kworker/0:1-kac  [kernel.kallsyms]             [k] worker_thread
    +   79.96%     0.03%  kworker/0:1-kac  [kernel.kallsyms]             [k] process_one_work
    +   79.93%     0.00%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_os_execute_deferred
    +   78.59%     0.01%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ev_asynch_execute_gpe_m
    +   78.54%     0.01%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ns_evaluate
    +   78.25%     0.01%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ps_execute_method
    +   78.10%     0.03%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ps_parse_aml
    +   75.07%     0.71%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ps_parse_loop
    +   49.25%     0.52%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ds_exec_end_op
    +   27.27%     0.25%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ns_lookup
    +   26.93%     0.19%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ns_search_and_enter
    +   26.48%    26.16%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ns_search_one_scope
    +   26.00%     0.05%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ds_evaluate_name_path
    +   19.60%     3.27%  kworker/0:1-kac  [kernel.kallsyms]             [k] acpi_ut_update_object_refere
    +   17.80%     0.00%  swapper          [kernel.kallsyms]             [k] secondary_startup_64
    +   17.80%     0.00%  swapper          [kernel.kallsyms]             [k] cpu_startup_entry
    +   17.78%     0.03%  swapper          [kernel.kallsyms]             [k] do_idle
    +   17.29%     0.01%  swapper          [kernel.kallsyms]             [k] call_cpuidle
    +   17.28%     0.00%  swapper          [kernel.kallsyms]             [k] cpuidle_enter
    

答案1

kworker通过禁用中断,我能够控制这些失控的进程,这给了我启发通过此主题Mauro Mascia 的一个旧答案已回答,但被埋没在此网站上,因为不幸的是,它已被标记为与另一个问题“重复”,而另一个问题并未提供解决方案。因此,用户将无法轻易找到它。

关于此问题(未解决)的 Ubuntu 错误报告是887793。其中还包含解决该问题的建议:

echo N > /sys/module/drm_kms_helper/parameters/poll

我使用了描述的方法这里。这有点复杂,因为它涉及找出导致问题的中断。我有一行这样的代码

echo "disable" > /sys/firmware/acpi/interrupts/#####

#####表示中断号,不同计算机之间会有所不同)在root的crontab中。

我没有测试第一种方法,而且我不知道哪种方法对系统性能的影响最小(如果有的话 - 并且在许多情况下远远优于失控的 kworker 进程)。

相关内容