macOS Sierra, kernel_task running taking more than 400% of CPU
After upgrading my MacBookPro to macOS Sierra, CPU is running very fast. When I tried to debug the issue, here is what I have found.
Solutions that I have already tried.
- Reset SMC
- Reset PRAM
- Tried to delete model identifier files (OS is not allowing).
- Removed all login items, and all automatically starting apps
- Removed all items in /Library/LaunchAgents, /Library/LaunchDaemons, /Library/StartupItems.
- Removed all installed software
But still no luck, any leads will be highly appreciated.
Thanks
Took apart the case and cleaning out the fans totally solved this for me. There was a lot of lint build-up in both of them so they were not cooling the system adequately.
The reason it causes high CPU load is that Mac creates fake CPU load to slow down the computer as a last-ditch effort to control temperature.
I had similar issues after switching out the Hdd for an Ssd. The only thing that fixed the issue for me was this link. https://www.davidschlachter.com/misc/kernel_task
If for whatever reason the link doesnt work, this is from the page.
Throttling is implemented as a kernel extension, which Rhys Oxenham suggests disabling by removing the plist in its Resources corresponding to the Mac's model. However, the list of Macs identified by plist files has not been updated for some years. Our 2013 MacBook Air (MacbookAir6,2) is absent. The X86PlatformPlugin.kext (also in the plugins folder of the IOPlatformPluginFamily.kext) has other Macs identified by their motherboard (see comments on this post). In my case, I tried disabling both the ACPI_SMC_PlatformPlugin.kext and X86PlatformPlugin.kext extensions, but this had no effect.
What did end up working for me was to disable the parent kernel extension IOPlatformPluginFamily.kext. So far I've not noted any adverse effects. Obviously I don’t take any responsibility for damages if you try this and have problems.
Here's what I did:
First, I had to disable SIP (since we're running OS X El Capitan) by booting into recovery mode (booting while holding command-R), opening the Terminal (under the Utilities menu), and running the command csrutil disable (more details on StackExchange).
From there, I booted into single user mode by holding Command-S when booting. After mounting the file system (fsck -y; mount -uw /), I made a backup copy of the IOPlatformPluginFamily.kext extension using rsync:
rsync -av /System/Library/Extensions/IOPlatformPluginFamily.kext /Users/Shared/
(To restore the extension from the backup, I would use rsync -av /Users/Shared/IOPlatformPluginFamily.kext /System/Library/Extensions/)
I then deleted the extension and rebooted:
rm -rf /System/Library/Extensions/IOPlatformPluginFamily.kext; shutdown -r now
After booting, the fan still runs at full speed, but the throttling is gone
I found this: https://support.apple.com/en-us/HT207359
So the kernel_task daemon “takes” cpu cycles to prevent other tasks to generate heat. This keeps the computer cool.
An update to "Mac Fan Control" had failed, and this was causing the overheating, and thus the kernel_task overload.
After manually downloading the Application and installing - my troubles were over.
https://www.crystalidea.com/macs-fan-control