“Fixing” kernel_task CPU Problems in MacOS 10.7/10.8

Update (Early 2013): When I wrote this guide it was focusing on Lion 10.7, many people have, of course, upgraded to 10.8 and have reported success using the same principles. However, the plist entries have not been added for newer models, e.g. the new MacBook Air or MacBook Pro (+retina). Therefore, if you follow the guide exactly you may run into problems such as your model identifier not being visible. After diagnosing this with others via email it would appear that the system uses another plist in the directory, therefore removing all of the plists has worked. I cannot comment further or prove this to be the case as I don’t have the available hardware. Let me know whether this works for you…..

I use a wide variety of operating systems at home, all services are provided by Linux, e.g. firewall, routing, file-storage and DLNA media. However, I like using a Mac too, I have a late-2009 MacBook Air which I use whilst traveling. Despite all of Lion’s flaws, I really like using it- full-screen apps, gestures and the new Mail.app is really impressive. The specification of this machine really isn’t anything special, the lack of expansion really leaves a lot to be desired but for what I do- it’s plenty. I will certainly be upgrading to the new Ivy Bridge MacBook Air when it comes out, perhaps then I’ll have more than 2GB memory and can run VM’s too(!).

The biggest problem I’ve been having with this machine on Lion (didn’t have it on Snow Leopard) is to do with kernel_task. Instead of splitting all of the underlying kernel operations into their own individual processes (and associated threads) they are all consumed by a single ‘task’ (more of a representation of the underpinnings of the microkernel architecture) that appears in the process list. What I’ve been noticing is that this ‘task’ sometimes goes out of control, consumes CPU resources with the utmost priority. For a long time I wasn’t sure what it was doing, it seemed to be kicking in when I was doing something that was relatively intensive (for a Mac anyway), e.g. YouTube.

A lot of people suggested that ‘rogue kexts’ (kernel drivers/modules) could be causing the problem, perhaps an incompatible module was being started by OS X that was installed when the system was running Snow Leopard. This seemed to make sense as a boot in safe-mode would cause no problems. Suffice to say, I created a Lion Install-USB and re-installed from scratch; guess what… same problem within hours! After a bit of digging around and investigating the kernel_task ‘process’ it was clear to see that it was looping through something continually. After further research I discovered that the kernel will keep looping some very simple tasks, e.g. getting the date, therefore ‘consuming’ (with the highest priority) the majority of the CPU in a bid to cool the system down.

So, it’s all to do with temperature control- you ‘remove’ a large portion of the CPU share from other applications and carry out low-overhead tasks continually until the CPU temperature drops. This sounds like a great solution to cooling, but it’s very intrusive. It’s agressive nature drags the system to a halt in a lot of ways, despite the fact that the CPU in my MacBook Air rarely exceeds 70 degrees (centigrade). Considering the TJ Max of my little 2.13GHz Core2Duo is 85 degrees I’d rather kernel_task not take this invasive action.

Thankfully, this “feature” is built into a kext, in which each model identifier specifies how to control the temperature of the CPU via this invasive action. The simple fix is to remove the entry for your model identifier from this kext- if it “doesn’t know” what to do with your particular model, it won’t take any action. Now, here comes the disclaimer… by taking the same action as I will outline below, I take absolutely no responsibility for any damage or loss caused to you or your property, you do this of your own free will. You’re over-ruling functionality that was designed to prolong the life of your equipment, despite the fact that it’s invasive and very annoying it’s there for a reason. Anyway, on to the fun stuff…

Firstly, you’re going to need the model identifier of your pesky Mac:

$ system_profiler -detailLevel mini | grep "Model Identifier:"
      Model Identifier: MacBookAir2,1

The kext we need to modify is IOPlatformPluginFamily.kext, you can verify it is running by-

sh-3.2# kextstat | grep IOPlatformPluginFamily
   67    3 0xffffff7f81229000 0x7000     0x7000     com.apple.driver.IOPlatformPluginFamily (5.1.0d17) <8 7 6 5 4 3>

Within this kext will be another further kext- ACPI_SMC_PlatformPlugin.kext, in which each recent Macintosh model is listed with relevant instructions that the kernel uses to determine how and when to invoke the control. (Make sure you switch to root now)

sh-3.2# cd /System/Library/Extensions/IOPlatformPluginFamily.kext/
sh-3.2# cd Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/
sh-3.2# cd Contents/Resources/
sh-3.2# ls | wc -l
49

So, there’s 49 different profiles listed in this kext as of the writing of this. We simply need to move the ‘plist’ file for the model identifier we discovered earlier out of that directory, so in my case I need to move file ‘MacBookAir2_1.plist’ out of this directory (to somewhere safe), but replace my model identifier with your specific one.

sh-3.2# mv MacBookAir2_1.plist /Users/<your username>/

You can simply reboot now for the changes to take effect. We could have removed the entire kext but it’s much safer to remove the plist file for the specific model as (to be honest) I don’t know what the rest of that kernel module does. I’ve been using this ‘fix’ for a few days now and not noticed any problems at all- overall it’s much quicker and I don’t have to worry about it running out of steam. What I would recommend is that you be a bit more careful about the placement of your Mac, you don’t want to be covering the exhaust. The Mac should protect itself if it *does* reach max temperature but I would just be a little more careful.

Note: It’s likely that this kext will get updated in the future by Apple in their update packs and as a result will replace the file you deleted/moved therefore you may have to repeat this process in the future :-)

Let me know how you get on.

 

138 thoughts on ““Fixing” kernel_task CPU Problems in MacOS 10.7/10.8


  1. d-69-91-129-13:IOPlatformPluginFamily.kext NLEE94$ cd Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/
    d-69-91-129-13:ACPI_SMC_PlatformPlugin.kext NLEE94$ cd Contents/Resources/
    d-69-91-129-13:Resources NLEE94$ ls | wc -1
    wc: illegal option — 1
    usage: wc [-clmw] [file ...]

    That is what it’s saying as of now. I can’t get the profiles. Help, please!

  2. Hi Nathan,

    It’s -l (i.e. lower case L), but you can skip this step. It’s only for verification.

    Thanks
    Rhys

  3. Hi Guido,

    I take zero responsibility for any damage caused as I’ve outlined many times above. I cannot guarantee you won’t cause any damage either, but I have been using this fix for a long time ;-)

    Cheers
    Rhys

  4. Hi Angus,

    This fix does not stop kernel_task from consuming memory, this is to be expected. If you want to run the latest versions of OSX you may want to increase your memory, or downgrade!

    Thanks
    Rhys

  5. An easier way.
    First of all I want to thank you for figuring this out, i don’t know how you do it, BUT not all of us are computer geeks (I use that term in the best sense) and it cost me half a day trying to figure this out. Here is the solution for the rest of us who don’t want to program. What I finally did was this:
    1. Go to About this mac under the apple in the upper left and click on More info
    2. Click on system report
    3. make a note of what it says after Model Identifier
    4. go to your master drive – System -Library – Extensions – IOPlatformPluginFamily.kext -Contents – Plugins – ACPI_SMC_PlatformPlugin.kext – Contents – Resources – find the name from step 3 and move it to a folder that you can find again if needed.
    3. Restart and you’re done
    I hope this helps.

  6. Thank you.

    My early 2011 Macbook Pro 8,1 was driving me nuts. It ran fine while on power, but when I disconnected the power and went on battery, it slowed down to a crawl, and CPU usage went to max, with % System at 90%+, but %User at almost nothing. Little to nothing showed in Activity Manager for CPU usage application by application. I was thoroughly stumped until running across your write-up. Now, after following the instructions, all is well, both on power and on battery.

    This all started happening about the time I went from 4gb to 16gb of memory. Could be just coincidence (I use this machine as a desktop replacement 95% of the time, so I really don’t know exactly when the problem started, since it’s never been present while on power.), or could be related. Just throwing that out in case others similarly plagued see it. Maybe there’s a reason Apple only “rates” these MacBook Pros to 8gb, and programs for that.

    One last thing. I didn’t need to gain root to accomplish this – didn’t even open a terminal. I was able to do it all through a Finder window.

    Again, thanks for both discovering this and taking the time to write it up and post it. You have given me back the portability of my MacBook Pro!

  7. Hi there. Late 2011 Macbook Pro running Lion. Within the last couple weeks I’ve been having this kernel_task issue, but it was the comment above by @bryazana that struck home. I was only having this issue when the computer was unplugged on battery power! Followed the instructions, removed the plist and everything is back to normal. Thanks a million guys!

  8. Rhys, this has completely turbocharged my Late 2011 Macbook Pro (8,2)! EVERY game a ran would have an erratic frame rate, speeding up and slowing down as if it was a tape running on faulty spindles. In OSX, itself, lag was horrible whenever I was doing any real work or web browsing that required Flash use.

    Now, it’s like a have a brand new machine. Everything is snappy and games run at a consistent frame rate. Thanks a million!

  9. You are a life saver @bryazana. The so called “Apple Genius” told me to replace my logic board. I followed your steps and my 2011 Macbook pro works like new. Thank you so much ! Brilliant.

  10. Thank you a gazillion times !
    I have been searching for this solution for like ages and couldn’t find the solution anywhere even from Apple itself! I have been struggling because of this problem for a year and couldn’t use my macbook air for anything !
    Thank you!
    Followed the instructions and now it got back to normal!

  11. I’ve been struggling with the kernel_task issue for several months now and before putting my macbook pro late 2011 (running 10.8.4) to sleep will just address the issue. But things got worse until i cant open any browser or my kernel_task will go 600%!! Thank you for sharing this fix. Now my macbook is working as it should. Keep it up!

  12. Fantastic solution :-) but take the warning for real – as if it over heats – CPU fan will not kick in to cool it quickly. Use a external fan like laptop cooler fan if your laptop over heats due to heavy duty processing.

  13. thank you so much for figuring this out. Still can’t believe this annoying bug is solved on my macbook. Also thanks to bryazana for posting it step by step!

  14. Wow, the short steps bryazana described stopped the problem.

    So annoying. My 8,2 machine is working well again!!

    Thanks

  15. hi everyone! i just do it on a macbook air 2,1 and worked!

    i tried to reset the SMC before and wasn’t working but with this process we just fix it i just have 1 day but goes perfect i will put my apple macbook air specs just for your information and perhaps another people have the same model…

    MacBookAir2,1
    Intel Core 2 Duo 2.13 GHz
    6 MB L2 CACHE
    2 GB RAM (2 CARDS OF RAM EACH ONE WITH)
    1 GB
    DDR3
    1067 MHz

    121GB SSD (HDD)
    GeForce 9400M

  16. What if my System identifier isn’t listed in the folder with the plists? Mine is MacBookPro9,2 and my folder only goes up to MacBookPro8,3. Should I just remove all of them?

  17. My 2011 macbook pro suddenly went nut with this kernal_task taking 500% of cpu. My battery has been dead for a while and when I take the mac to genius bar, they just tell me to change the Logic Board, which might potentially take me 1200$. You just saved my 1200$ and hell yeah this work really well! Thanks!

  18. Worked out well. Thank you so much for the tip. For all of you who currently have OS X installed in another language than English – reinstall OS X in English and just follow the lovely guideline of bryazana.

  19. Hello
    I’m experiencing the same issue with high CPU usage by kernel_task and I tried to use your solution however I can’t move the plist file – I receive a message of “Permission Denied”.
    I use a macbook air 3.2, 13″, running MacOSX 10.6.8.
    I would appreciate if you could help me to solve it!

  20. Wow.. now my MBP is running like in Snow Leopard. Too sad that i didn’t found your post earlier even i researched lot on this problem, since Mavericks is coming in like 1 month lol :/

  21. Wow, thanks a lot! That by the way disables thermal throttling, which makes the mac SUPER fast. I mean, I just ran Prime95 torture test on all cores on my MBP and Youtube didn’t lag. I call that a successful hack!

  22. Hi,
    Its great to have my computer back, but now there’s a new problem – the fan now seems to race all the time at top speed. Is there any way to restore some responsiveness of the fan to CPU temp but still remove the kernel_task trap?

    Thanks

    Steve

  23. THANK YOU FOR THIS WRITE UP!
    This fix made my mac useable again! I was so sad I had to spend a large amount of money on a new logic board but this did the trick and it’s like new again!!!!

  24. i’m stuck on step 4 of bryazana’s comment:
    1. Go to About this mac under the apple in the upper left and click on More info
    2. Click on system report
    3. make a note of what it says after Model Identifier
    4. go to your master drive – System -Library – Extensions – IOPlatformPluginFamily.kext -Contents – Plugins – ACPI_SMC_PlatformPlugin.kext – Contents – Resources – find the name from step 3 and move it to a folder that you can find again if needed.
    5. Restart and you’re done

    how do i open the IOPlatformPluginFamily.kext?

  25. thank you!!!

    this worked wonders for my late 2008 unibody macbook. i recently upgraded to 8gb of ram and mountain lion (from 2 gb and osx leopard). post-upgrades, it was running really great, but at least once a day the cpu usage would go through the roof during stressful tasks, causing it to run like molasses, and i would have to reboot…. something that never occurred before the upgrade.

    this fix cured that, and the fan still comes on when necessary (if i feel it’s getting hot, i sometimes use smc fan control).

    thanks! this saved me many headaches! my mac guy couldn’t even figure this one out.

  26. If you follow directions exactly you should be ok, don’t need to be a genius to use terminal
    (Even though I put a slash in front of Contents lol twice)
    Thank you so much GOD BLESSS YOU ‘

  27. Thanks for the fix. It has always amazed me that end users come up with fixes and holes that need to be fixed before the manufacturer that made the device and wrote the software. I have a Mid 2010 mac mini running 10.8.5 that just pegged the cpu and had the longest pauses in the user interface to do anything. but removing the kext in the kext fixed it right away. I also use smc fancontrol to keep my cpu cooler. so thanks again.

  28. Brilliant! Worked for me! The fan still runs at max speed, but the kernel is no longer pegging the CPU.

  29. I’ve been looking for help for over a year! Even guys at apple couldn’t help, THANK YOU! Now the system is working perfectly!

  30. An update. The problem came back immediately after the upgrade to OSX Mavericks 10.9. It did not come back after the many point upgrades in 10.8. Repeating the process above fixed the issued immediately. Thanks again for taking the time to solve and post this solution. A real lifesaver!

  31. Can someone please help me, I did the thing described above and deleted the MacBook8,1 plist. This helped to get the kernel_task CPU back to normal and my CPU usage is now around 7% and my MacBook is not having high temperatures either. However, the fan is still going crazy and is making lot’s of noise. Does someone know how to resolve this problem?

Leave a Reply

Your email address will not be published. Required fields are marked *


× 2 = two

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>