kworker eating 85% CPU 1 most of the time!
I'm running Ubuntu 18.04, kernel 5.4.81, and kworker/0:1+kac
is using 85% CPU 1 most of the time.
Here is some useful info:
-
top
output: -
System Monitor CPU load:
-
perf
report: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
Solution 1:
I was helped taming such kworker
runaway processes by disabling an interrupt, inspired by this thread and an old answer by Mauro Mascia anwered, burried on this site because it has unfortunately been marked as a "Duplicate" to another question, that did not provide a solution. Therefore, users will not easily find it.
The Ubuntu bug report on this issue (not solved) is 887793. It also contains a suggestion to workaround the issue:
echo N > /sys/module/drm_kms_helper/parameters/poll
I used the approach described here. It is somewhat complicated because it involves finding out the interrupt(s) that cause the issue. I have a single line in the form of
echo "disable" > /sys/firmware/acpi/interrupts/#####
(with #####
denoting the interrupt number, which will be different between computers) in the crontab of root.
I did not test the first approach, and I do not know which of both approaches is impacting system performance the least (if at all noticeable - and in many case by far preferred over a runaway kworker process).