Typically, my kernel_task process uses 1-4% CPU and 100-700MB of memory. However, sometimes when I have the power adapter plugged in, the CPU usage jumps to around 500% (8 cores) and stays there until I unplug the power adapter. I can plug it back in and everything is fine for a few seconds or a few days, then it eventually happens again. How can I stop this from happening?
In my experience this has always been due to a hardware fault. However before doing anything else reset the SMC as detailed here: http://support.apple.com/kb/HT3964 as its power related.
This appears to happen when the Mac is struggling to communicate with hardware. Which Mac is it? How old is the battery? Is your battery life still good? Has the Mac had any damage - dropped? Liquid? Have you tried a different power adapter?
http://www.rdoxenham.com/?p=259 covers disabling the kernel extension responsible for triggering this misbehavior. However, doing so also disables some other thermal management functionality.
The folks who observed "AC power" contributes are on to something.
High chassis temperature from charging together with peripherals plugged in can cause this issue. Simply moving the charging cable from the left to the right ports can be enough to cool the hotspot and resolve the problem. On a machine with MagSafe try unplugging peripherals from the left ports until the battery is full.
CPU usage has nothing to do with this. A hot CPU is throttled by reducing its clockspeed not by scheduling no-op load.
See https://apple.stackexchange.com/a/363933/27135 for causal proof.
my kernel_task issue (cpu at -> 500% for ever) was blutooth related:
Activity Manager isn't acurate enough to help you see that there are
other processes indirectly loading the Kernel.
top will unveil these hogs.
To display processes sorted starting with the biggest CPU consummer:
top -o cpu
...sorted starting with the biggest virtual memory consummer:
top -o vsize
...sorted starting with the process making the more context switches (being started and stopped with a huge frequency, sometimes the result of 2 processes talking together, not letting the other processes the freedom to get the cpu):
top -o csw