18:07 - Thursday, 24 April 2014

Kworker, What Is It And Why Is It Hogging So Much CPU?

#Topics: kworker/0:3,kworker,kworker cpu,kworker hogging cpu,laptop kworker

I recently upgraded to the Kubuntu Natty Beta 1 and I’ve been having a lot of issues with the process kworker. At moments it uses almost half my CPU. Also, strangely enough it seems to affect my USB ports; whenever I plug in an USB drive, the process kworker goes into hyperdrive, leaving me unable to work.

I have thought about filing a bug but since I haven’t even found any reasonable explanation on what kworker is I figured I should find out first.

“kworker” is a placeholder process for kernel worker threads, which perform most of the actual processing for the kernel, especially in cases where there are interrupts, timers, I/O, etc. These typically correspond to the vast majority of any allocated “system” time to running processes. It is not something that can be safely removed from the system in any way, and is completely unrelated to nepomuk or KDE (except in that these programs may make system calls, which may require the kernel to do something).

There were some reports of excessing kworker activity for relatively idle systems starting during 2.6.36 development ( https://lkml.org/lkml/2011/3/29/2 is one example discussion ), and wide reports of confusion and problems with 2.6.38 (although many of these reports include the word “Natty”, so I presume these people not to have used any kernel between 2.6.35 (distributed in Ubuntu 10.10) and 2.6.38 (distributed in Ubuntu 11.04).

I’ve found many reports of something that “fixed” this for one or another user. Most “fixes” seem to be related to updates of the kernel of various sorts. Where the update can be tracked to a specific issue, it seems to often be some driver or kernel service that has been patched to not misbehave: I have the impression that there are a very large number of things in the kernel that can cause a behaviour which is observed as excessive kworker usage.

If you find the system unusable due to excessive kworker activity, I would recommend trying to do fewer things. If you think you’re not doing anything, try shutting down long-running services or timers (RSS readers, mail readers, file indexers, activity trackers, etc.). If this doesn’t work, try restarting. If your system allows you to enable or disable hardware in a preboot environment, try turning off hardware you aren’t using. If it happens on every restart before you do anything, you could try uninstalling things, but at this point you’ll want to be running syscall profiling tools to track down specific applications that seem to be causing this overload.

It is to be hoped that your specific system will stop expressing this behaviour with a future kernel upgrade (and many of the most common causes of this have been solved).

I recently installed Ubuntu Natty on an external drive usb wd passport. When I start on my desktop which is about two years old, everything works like a charm.
When I start on my new laptop (MSI gt680r system), it slows down after I wake up the computer from sleep, or if I plug another usb disk.

Kworker processes take more and more cpu, and the mouse freezes from time to time.

I have read several solutions on various forums that did not work.

I went into the bios of my laptop, where there was:

Hand XCHI OFF: EnabledEHCI Hand OFF: disabled

I changed for:

Hand XCHI OFF: disabledEHCI Hand OFF: disabled

and since that, it doesn’t freeze anymore on natty on my laptop.

I would enable hand back if and when the problem is corrected.

On Mac OS X, mdworker is the Spotlight indexing service. So Kworker might be some indexing engine for a system wide search.