How to fix kernel_task CPU usage on High Sierra (OSX)

Introduction

Update: Article updated with a warning on USB devices. We also added a common solution on temperature sensors.

If you notice that after updating to high sierra your system is very slow, check with activity monitor the processes that are using cpu. It's very common that the kernel_task is using too much cpu like 100% or it has high cpu time.

In this tutorial we are going to explain how to solve high cpu usage in OSX High Sierra.

First we assume that you already tried safe mode and reset System Management Controller (SMC) on your Mac, if you didn't try that we recommend to do it first.

We also recommend to How to reset NVRAM on your Mac.

Make sure you applied all the updates.

Solution 0: !Clean your computer!

We recommend to clean your computer and remove any dust from inside, temperature control uses lots of cpu when the computer is dirty. If you see high CPU usage and you never cleaned your computer before it could be the cause of your problem. You can use a vacuum cleaner or a hairdryer (no heat!) yo clean the inside of the mac.

Solution 1: hardware-specific problem

Remove all usb devices connected to your computer and restart. If the problem continues and you review all the solutions it could be an internal hardware issue. Sometimes a failed or disconnected temperature sensor could cause high cpu usage of kernel_task.

Solution 2: Third party kexts

Check kernel extensions (kexts)

Some third party application could install kexts to your system and this could probably cause issues.

To verify that a kexts could cause high cpu usage, reboot the computer in safe mode and check if kernel_task uses too much cpu. If you find that in safe mode everything is ok, there seems to be a problem with a thirdparty.

To start up in safe mode:

  • Start or restart your Mac, then immediately press and hold the Shift key.
  • Release the Shift key when you see the login window.

Finding the problematic kext

Reboot in normal mode and execute the command kextstat in your favorite terminal. The command kextstat will show you the loaded kernel extensions.

You need to look for extensions that are thid party, the ones that don't start with com.apple.etc. In our case we had virtual box kernel extensions and thos start with org.virtualbox.kext.

You can try to update those applications and just remove them with an unistaller or thronwing it to the thrash.

Common kext that consumes CPU: ACPI_SMC_PlatformPlugin.kext

WARNING This could damage your hardware. Make sure you understand what you are doing with the following steps.

First make sure that in safe mode kernel_task is not consuming CPU, since ACPI_SMC_PlatformPlugin.kext is disabled in safe mode. After following the next steps we are going to disable temperature control.

First we need to get the current model:

$ system_profiler -detailLevel mini | grep "Model Identifier:"
Model Identifier: MacBookPro8,2

We are going to use the Model identifier to remove the .plist. In this way we disable temperature control. Create a backup of the current configured model:

mkdir -p ~/backup
sudo mv /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resourcesa/MacBookPro8_2.plist ~/backup/

The MacBookPro8_2.plist depends on your model.

We recommend to control you cpu temperature always after applying this fix. We also recommend to take you computer to apple, since there could be an issue with sensors.