![kworker 大部分时间占用 85% 的 CPU 1!](https://linux22.com/image/940207/kworker%20%E5%A4%A7%E9%83%A8%E5%88%86%E6%97%B6%E9%97%B4%E5%8D%A0%E7%94%A8%2085%EF%BC%85%20%E7%9A%84%20CPU%201%EF%BC%81.png)
我正在运行 Ubuntu 18.04、内核 5.4.81,并且kworker/0:1+kac
大部分时间使用 85% 的 CPU 1。
以下是一些有用的信息:
top
输出:系统监视器 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 进程)。