“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.

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

  1. 2 genius bar appointments, 5 apple tech. support phone calls, 2 more “by the way” tech. support calls and finally, an iffy-uncertain quote from genius bar, ranging from a possible $200-800 bill, payable upon completion of services rendered. 2 years of neglecting my MBP… Thank you man. My macbook thanks you…

  2. My identifier is MacBookPro10,1 but it does not appear as a file in the directory to move. I have the Retina Display 15″ – any ideas?

    MacBook1_1.plist MacBookPro2_2.plist MacPro4_1.plist
    MacBook2_1.plist MacBookPro3_1.plist MacPro5_1.plist
    MacBook3_1.plist MacBookPro4_1.plist Macmini3_1.plist
    MacBook4_1.plist MacBookPro5_1.plist Macmini4_1.plist
    MacBook5_1.plist MacBookPro5_2.plist Macmini5_1.plist
    MacBook5_2.plist MacBookPro5_3.plist Macmini5_2.plist
    MacBook6_1.plist MacBookPro5_4.plist Macmini5_3.plist
    MacBook7_1.plist MacBookPro5_5.plist Xserve3_1.plist
    MacBookAir1_1.plist MacBookPro6_1.plist iMac10_1.plist
    MacBookAir2_1.plist MacBookPro6_2.plist iMac11_1.plist
    MacBookAir3_1.plist MacBookPro7_1.plist iMac11_2.plist
    MacBookAir3_2.plist MacBookPro8_1.plist iMac11_3.plist
    MacBookAir4_1.plist MacBookPro8_2.plist iMac12_1.plist
    MacBookAir4_2.plist MacBookPro8_3.plist iMac12_2.plist
    MacBookPro1_1.plist MacPro1_1.plist iMac8_1.plist
    MacBookPro1_2.plist MacPro2_1.plist iMac9_1.plist
    MacBookPro2_1.plist MacPro3_1.plist

  3. I had the kernal_task problem on a late 2009 Macbook Pro. I cleanedthe fan and removed a couple of small dust bunnies. This has fixed the problem for me. Thanks to everyone for sharing your experiences with this difficulty.

  4. Stuarts-MacBook-Pro:~ bigboy99$ $ system_profiler -detailLevel mini | grep “Model Identifier:”
    -bash: $: command not found

    What next?

    Thanks

  5. MacBook-Pro-de-Mac:~ Mac$ kextstat | grep IOPlatformPluginFamily
    88 5 0xffffff7f80bfc000 0x7000 0x7000 com.apple.driver.IOPlatformPluginFamily (5.1.1d6)
    MacBook-Pro-de-Mac:~ Mac$ sudo su
    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
    50
    sh-3.2# mv MacBookPro8_1.plist /users/Matheus/
    mv: rename MacBookPro8_1.plist to /users/Matheus/: No such file or directory

    Keeps saying that there ar no file or directory …. my mac is in portuguese , can this be the problem ?

  6. Worked for me. My problem seems to be triggered by a broken battery. Machine is a MacBook Pro 8,2. Thanks and if you ever make it to Madrid, be sure to remind me to buy you a beer!

  7. Hello. Unlike others, I didn’t have to go through hell to solve the issue because Google was smart enough to point me to your post quickly. The solution worked perfectly for my MacBookPro8,1.

    I just wanted to leave registered here that I believe in my case the problem was related to the battery rather than with temperature. I run smcfancontrol which always shows me the temperature and fan RPM, and everything seemed to be OK with that, but the kernel_task taking up 350% started exactly when my battery became faulty and started to show the “Not Charging” message. It’d been showing the “Replace Now” message for quite a while now, but it showed “100%” charge (weird). On the very boot where it first showed me a 0% charge, that’s when the kernel_task issue began to happen.

    I am curious about how you came around this solution in the first place, how you conducted your investigation to find it; and, how it is that you came to know about the workings of this kernel extension.

    I think this whole issue is completely weird but I’m glad you posted this. You saved many people’s computers from being completely useless. Thank you very much.

  8. Worked immediately for my MacBookPro6_2.
    I was getting intermittent and prolonged ~200% CPU usage (i.e. 50% of my 4 core capacity) irrespective of battery/AC source.
    As far as cooling goes, I’m used to using my laptop on wood, carpet or my lap. I’m hunting down a chunk of aluminium on which to rest it while at work.
    Many thanks.

  9. Thanks so much! This is why I love the Internet, and now you! 🙂

    Followed the suggestions and my kernel_task process now is down to using 5% CPU instead of 200%.

    For some reason my FlashBuilder 4.7 is still slow as molasses on my MacBook Pro 6.1. So, something else going on there still 🙁

    Erik

  10. my Model Identifier: MacBookPro10,1 (MBP Retina Display) and not in the list of ACPI_SMC_PlatformPlugin.kext. How can I fix this damn kernel_task?

  11. Thanks a lot! It worked for me too – MacBookPro mid 2010. I was thinking on changing the hard drive.

  12. You need to drop the first ‘$’, the $ just refers to the command line 🙂

  13. So, others have reported success with deleting them all, will update this page now.

  14. Hello! I found the 49 profiles, but I cannot find iMac13_2.plist (which is the one of my iMac). It is like it has already been removed! Help…

  15. Thanks so much for posting this. My MacBook was hot, the CPUs heavy and I had codin’ to do. This worked an absolute treat. No clue what I would’ve done otherwise.

  16. hello guys, i cant find my plist over here i have an iMac 21 2012 version my model identifier is iMac13,1 but i cant find it in the resource list

    iMac8_1.plist
    iMac9_1.plist
    iMac10_1.plist
    iMac11_1.plist
    iMac11_2.plist
    iMac11_3.plist
    iMac12_1.plist
    iMac12_2.plist
    MacBook1_1.plist
    MacBook2_1.plist
    MacBook3_1.plist
    MacBook4_1.plist
    MacBook5_1.plist
    MacBook5_2.plist
    MacBook6_1.plist
    MacBook7_1.plist
    MacBookAir1_1.plist
    MacBookAir2_1.plist
    MacBookAir3_1.plist
    MacBookAir3_2.plist
    MacBookAir4_1.plist
    MacBookAir4_2.plist
    MacBookPro1_1.plist
    MacBookPro1_2.plist
    MacBookPro2_1.plist
    MacBookPro2_2.plist
    MacBookPro3_1.plist
    MacBookPro4_1.plist
    MacBookPro5_1.plist
    MacBookPro5_2.plist
    MacBookPro5_3.plist
    MacBookPro5_4.plist
    MacBookPro5_5.plist
    MacBookPro6_1.plist
    MacBookPro6_2.plist
    MacBookPro7_1.plist
    MacBookPro8_1.plist
    MacBookPro8_2.plist
    MacBookPro8_3.plist
    Macmini3_1.plist
    Macmini4_1.plist
    Macmini5_1.plist
    Macmini5_2.plist
    Macmini5_3.plist
    MacPro1_1.plist
    MacPro2_1.plist
    MacPro3_1.plist
    MacPro4_1.plist
    MacPro5_1.plist
    Xserve3_1.plist   

    help me with this im having trouble with my kernel task

  17. Awesome !!!
    You are a genius. Finally my macbook back to life …
    Thanks.

  18. Restarted my computer today and kernel_task was using 500-600% CPU and my power indicator says “No battery recognized”. Your plist removal tip did the trick to deal with the kernal_task CPU spike, but the battery is still no longer recognized. A few others seem to have this issue; any idea as to what might be the problem or what could fix it? Thanks, Rhys!

  19. I’m sorry if my question seems stupid….I read all theses pots and I’m in the situation you updated ion the first paragraph ; I have an Imac7.1 so I can’t find the model in the plist.
    But I didn’t understand what to do to find other plists ; I understood you said there are others plists with others models…..but you don’t say where.
    I’m sorry, I’m french and maybe I do not understand everything.

    Thank you very much

  20. Hi – Glad it helped… no idea regarding the battery… do you have a removable battery?

  21. Can’t thank you enough. This fixed the issue on my MacbookPro6,2 when connected to an external display. Again, many thanks!

  22. It worked like a charm for me many thanks for the solution.

    In my case, the issue was associated to a faulty battery.

    cheers

  23. dude – you have saved my mac – I was really stumped with this one and almost gave up on OSX for Win7.

    I now have a fast and smooth OSX , – lovely

  24. I actually came across this page looking for related problem with kernel_task taking a majority of the first core’s CPU usage when my 12,1 iMac was idle. It would most commonly occur once the iMac had been woken up from sleep, and the only way to get the iMac performing as normal would be to restart completely. I’ve been annoyed by this problem for almost a year now (seems like ever seen upgrading to Snow Leopard).

    After reading several different possible solutions, I came across someone mentioning a problem with Bluetooth. I then remembered that I had my Ethernet port marked “inactive” (Using WiFi only), and my iPhone 5 USB tethering port listed as well.

    I removed the iPhone 5 USB network interface, and re-enabled my Ethernet port (now just shows not connected)… then instantly the kernel_task went down to about 2% average and everything sped up. Another way I could always tell was to watch how smooth the window animation would be when scrolling to different desktops. With the CPU somewhat high, it would always appear jerky.

    Hope this helps someone else. Again, I realize this isn’t exactly related to this thread… but is related to kernel_task.

  25. Can anyone confirm how to do this on newer models? I have a Macmini6_1 and kernel_task is using over 1GB of memory, even after a reboot.

  26. I am getting a permission denied on the last step when I try to move the .plist file… any suggestions?

  27. Thanks! Worked on my first gen Macbook Air with OSX 10.6

  28. I know this is going to sound really stupid as a lot of you have successfully followed the instructions, but I can’t seem to get paste command of
    $ system_profiler -detailLevel mini | grep “Model Identifier:”
    Model Identifier: MacBookPro8,1

    I cannot figure out from the instructions what the next command I’m actually meant to enter is? I have tried what is explained there and it comes back with:

    $ sh-3.2# kextstat | grep IOPlatformPluginFamily 67 3 0xffffff7f81229000 0x7000 0x7000 com.apple.driver.IOPlatformPluginFamily
    -bash: sh-3.2#: command not found

    I’ve tried other combinations, am I doing something really obviously wrong? Is it meant to be put in as two separate commands?

    Thanks,
    Steph

  29. Hi,
    Thanks, this solved my issue with a Macbook Pro connecting to a thunderbolt and LCD display. I’m wondering though, can this lead to breaking the MBP?

  30. .plist files for ivy bridge systems:

    IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/

    Mac-00BE6ED71E35EB86 – iMac13,1/i5-3335S
    Mac-2E6FAB96566FE58C – MacBookAir5,2/i5-3427U
    Mac-4B7AC7E43945597E – MacBookPro9,1/i7-3720QM
    Mac-6F01561E16C75D06 – MacBookPro9,2/i5-3210M
    Mac-7DF2A3B5E5D671ED –
    Mac-031AEE4D24BFF0B1 – Macmini6,1/i5-3210M
    Mac-66F35F19FE2A0D05 – MacBookAir5,1/i5-3317U
    Mac-AFD8A9D944EA4843 – MacBookPro10,2/i7-3520M
    Mac-C3EC7CD22292981F – MacBookPro10,1/i7-3720QM
    Mac-F65AE981FFA204ED – Macmini6,2/i7-3720QM
    Mac-FC02E91DDD3FA6A4 – iMac 13,2/i7-3770
    Source: RevoGirl

  31. You’re a hero. Thank you so much!
    This fixed the issue for me too.

    I have used weeks on figuring out that the beep was wrong.
    Was just about to give up, then I read your solution…..
    THANK YOU!

    Best,
    Jacob

  32. Any reason not to just rename the file in-place, like “mv MacBookPro6_2.plist MacBookPro6_2.plistDISABLED”?

  33. @Matheus:

    I’ve ran into the same problem. Like the post says, you’ve to run the commands in root. In order to do this you’ve got to activate the root user first:
    • System Prev > Users & Groups > Open the lock;
    • Login option > [edit] on networkaccountserver;
    • [Lock] > Enable root user from Edit-menubar.

    In order to login in the root user from the terminal just type: “login root” and enter your password.

    Good luck!
    Now going for the restart to see if it worked for me

  34. Worked for me. Now just 10% CPU on kernel_task.

    Is it save to delete the “MacBookPro9_2.plist” file from the Users-folder?

  35. Hi, every time I type in a command it says “command not found.” Any idea what I could be doing wrong?

  36. Excellent. Just moved the kext, and the cpu usage is back to normal. A few weeks ago it started hogging 350% of the CPU when unplugged. And got really hot. By the time I noticed, it seemed to be having all kinds of other problems, color bars across the screen, freezing, slowing to a crawl, disk errors, random shutdowns, and eventually it wouldn’t startup. I removed the battery, hard disk, RAM, cleaned the fans, cleaned the motherboard, checked all the connectors. Still dead. Then I left it for a couple of weeks and it started, but with problems. So I went through the gamut of solutions, reset the SMC, started in Safe Mode, new hard disk, started from external HD. Eventually I came back to the original problem, crazy CPU usage when the power is disconnected. And found your solution. I’ll give it a few days and see what happens. But thanks a million.

  37. Dude,

    I own a MacBookPro8,1, and it works perfect.

    Thanks for saving my MacBook and an SSD that I thought was the culprit. 😉

    By the way how you came to this solution? I mean the investigative process.

    Thanks,
    AC

  38. Hi Steph,

    Just ignore the kextstat line, move onto the next step. This was just to check the kext was even running. But it’s usually safe to proceed.

    Cheers
    Rhys

  39. Hi Tim,

    Yes, you’re not root. “sudo su -” first.

    Cheers
    Rhys

  40. Hi Efe,

    Not sure what you’re doing really, email me with your console output.

    Cheers
    Rhys

  41. Hey,
    Enabled root, in my terminal, got it to tell me what model my mac is MacBookPro8,1
    what next, am i doing somthing idiotic, see below?
    -bash: your: No such file or directory
    unknown-b8-8d-12-25-fd-92:IOPlatformPluginFamily.kext joseph-harvey$ sh-3.2# mv MacBookPro8_1.plist /Users/Joseph & Natalie/
    [1] 818
    -bash: sh-3.2#: command not found
    -bash: Natalie/: No such file or directory
    [1]+ Exit 127 sh-3.2# mv MacBookPro8_1.plist /Users/Joseph
    unknown-b8-8d-12-25-fd-92:IOPlatformPluginFamily.kext joseph-harvey$

Leave a Reply

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

Sorry - to avoid spam! *