I installed Ubuntu 13.10 on a MacBook Pro 10,1. However, after installing, the kworker process consumes over 90% of CPU usage. I tried the following:
- (Suggested in this answer) Execute
grep . -r /sys/firmware/acpi/interrupts/
to see if any GPEs have high values. - (Suggested in this answer) Under
sudo -s
, executeecho l > /proc/sysrq-trigger
and read the output indmesg
. - (Suggested in this answer) Execute
sudo perf record -g -a sleep 10
and read the output inperf report
.
For 1, gpe16
had a high value and it kept climbing. I tried disabling gpe16 as suggested in the answer, and the kworker CPU usage went down to 0.0%.
For 2 (without disabling gpe16
), dmesg
showed no additional information than what was present at boot.
For 3 (without disabling gpe16
), it reported the following in red:
- 50.76% kworker/0:5 [kernel.kallsyms] [k] native_read_tsc
- native_read_tsc
- 64.72% delay_tsc
__const_udelay
+ gmux_index_wait_ready.isra.6
- 35.28% __const_udelay
+ gmux_index_wait_ready.isra.6
- 35.14% kworker/0:5 [kernel.kallsyms] [k] delay_tsc
- delay_tsc
- __const_udelay
- gmux_index_wait_ready.isra.6
- 59.84% gmux_index_write8
gmux_notify_handler
acpi_ev_notify_dispatch
acpi_os_execute_deferred
process_one_work
worker_thread
kthread
ret_from_fork
- 40.16% gmux_index_read8
gmux_notify_handler
acpi_ev_notify_dispatch
acpi_os_execute_deferred
process_one_work
worker_thread
kthread
ret_from_fork
Questions:
- What is
gpe16
? How do I know that disabling this interrupt for the sake of kworker will not have other consequences? - What information can be gleaned from
perf report
? Is there something do to with the timestamp on the MacBook Pro?