kernel_task is throttling the CPU
me@grafxflow

Written by me@grafxflow

15 Nov, 2020
78
226,750

Disable macOS 11 (Big Sur) 'kernel_task' which is throttling the CPU

WARNING ALERT: This ONLY relates to someone who has deleted the IOPlatformPluginFamily.kext in previous versions of macOS to sort the kernel_task overloading the CPU but now after installing macOS 11 (Big Sur) the problem has started again. You will be deleting a system extension and taking a risk... so you have been WARNED! + also best to use version 11.1 upwards, since when testing with 11.0.1 I found it very buggy!

So here is the problem...

After booting up the MacBook Pro the macOS would be running unbelievably slow. When opening the Activity Monitor to see what was happening with the CPU the thing at the top of the list was the kernel_task using around 500%!

'kernal_task_macOS_fix'

In any of the previous versions - macOS 10.14 (Mojave) or below it was a fairly easy fix by first running recovery mode CMD + R and in the terminal.

csrutil disable

Then running single user mode CMD + S.

fsck -fy

mount -uw /

sudo mkdir /IOPlatformPluginFamily-backup-kexts/

sudo mv /System/Library/Extensions/IOPlatformPluginFamily.kext /IOPlatformPluginFamily-backup-kexts/

sudo rm -rf /System/Library/Extensions/IOPlatformPluginFamily.kext

But from macOS 10.15 (Catalina) onwards this has stopped working. The reason being that Apple introduced the read-only system volume which is a dedicated partition for only storing system content which prevents any tampering with system files which one of them is the troublesome IOPlatformPluginFamily.kext.

Now before finding the solution below which relates to macOS 11 (Big Sur) I had tried making a bootable USB running macOS 10.14 (Mojave) but this couldn't read the read-only system volume.

Step 1 - Disable FileVault

Go to System Preferences -> Security & Privacy and choose the FileVault tab. Then select Turn Off FileVault.

Step 2 - Bypassing the Signed System Volume (SSV*)

SSV helps prevent tampering with any Apple software that is part of the operating system. Additionally, it makes macOS Software Update more reliable and much safer. SSV utilizes APFS snapshots, so if an update cannot be performed, the old system version can be restored without reinstallation.

So this means that macOS Big Sur actually no longer boots from the live system volume but now boots from a snapshot/copy of the same system folder. Normally it's impossible to mount a snapshot as writable, only readable so here is the solution I have found.

So at first bootup in Recovery Mode using CMD + R. On the screen that loads go to the navigation and choose Utilities -> Terminal. Input the following.

NOTE: Without this being done first you won't have permissions to carry out the next csrutil authenticated-root disable command.

csrutil disable

Then.

reboot

Straight away bootup in Recovery Mode again using CMD + R and choose Utilities -> Terminal. Input the following.

csrutil authenticated-root disable

Then.

reboot

Step 3 - Mount the Live Volume and backup the IOPlatformPluginFamily.kext file

Now reboot back into the normal macOS boot mode and let us mount the live volume - the disk1s5 could be different.

NOTE: To find out if 'disks5' is correct for your machine enter diskutil list in the terminal which will list your drives.

diskutil mount disk1s5

Next make it writable which will require you to enter your password - the /Volumes/Macintosh\ HD\ 1 could be different.

sudo mount -uw /Volumes/Macintosh\ HD\ 1

Password:

Now let's first see that the offending IOPlatformPluginFamily.kext file exists by entering.

ls -a /Volumes/Macintosh\ HD\ 1/System/Library/Extensions/

Rather than deleting the file we will do a backup - so use the below and move it to a newly created folder.

sudo mkdir /Volumes/Macintosh\ HD\ 1/IOPlatformPluginFamily-backup-kexts/

sudo mv /Volumes/Macintosh\ HD\ 1/System/Library/Extensions/IOPlatformPluginFamily.kext /Volumes/Macintosh\ HD\ 1/IOPlatformPluginFamily-backup-kexts/

Again see if it has disappeared from the directory.

ls -a /Volumes/Macintosh\ HD\ 1/System/Library/Extensions/

Step 4 - Create snapshot and tag it for the next default reboot.

Now we have deleted the file we need to add this new version of the system folder as a snapshot so enter the following.

sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -s "SnapshotName" -v /Volumes/Macintosh\ HD\ 1

Then tag this as a our default for the next reboot.

sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -r "SnapshotName" -v /Volumes/Macintosh\ HD\ 1

Now fingers crossed you should be able to reboot and the kernel_task should no longer be hogging the CPU as before and in return slowing your machine down.

Share this article

Add comment...

78 Responses

Pascal
22 Jun 2022

Best manual for disabling annoying and buggy kernel_task. Thank you so much!

Peter
09 Sep 2022

Hello. I'm on Monterey, and I need to remove the IOPlatformPluginFamily.kext

I have a few questions regaring step 3 .. .(and because of the 500 character limit, this comment comes in 3 parts)

I followed your guide, and I got no errors. After the last command of step 3 - listing the kexts again - the IOPlatformPluginFamily.kext was indeed gone. Hooray!

Mickey
27 Oct 2022

Hi. Did this successfully, but after reboot the external hard drives are no longer mounting. Any fix for this?

Max
16 Aug 2023

Thanks a lot, mate. I followed your instructions and can confirm that this solution perfectly works with Monterey as well, unfortunately including the lag at startup and shutdown. But hey, why not make coffee or have a beer while waiting? Still better than substituting diskettes on System 7...

Matt
27 Jan 2024

how do i fix "failed to verify ARV status for /Volumes/Macintosh\ HD\ 1, bp_err 255

alex
29 Dec 2024

I did everything. Kernel task has stopped working, but my MacBook works three times slower than normal. what can I do with this?

justmac
13 Mar 2025

I just follow your tutorial with Catalina 10.15.7 and Macbook Air 11" Early 2014
I had to modify some of the commands to make this work
yes the kernel_task isn't taking much cpu power now
but the problem remain persist
it's still slow (check with Intel Power Gadget)
core max still at 0.9 GHz, avg at 0.8 GHz and min at 0.7 GHz
the weird thing is core request (by the OS) can go up to 2.7 GHz (as it should be)
but the core max only at 0.9 GHz
any suggestion?

Mike
15 Mar 2025

This solution worked for me on Big Sur, but I just upgraded to Sequoia. The kernel task doesn't appear, but the symptoms this process generated do. How do I know if the same steps need to be followed on Sequoia? And if they will work?

Smart Search

me@grafxflow Author Profile picture

me@grafxflow

Founder, Grafxflow

I am a Full-stack Developer who also started delving into the world of UX/UI Design a few years back. I blog and tweet to hopefully share a little bit of knowledge that can help others around the web. I build lighting-fast dynamic content engines with Laravel, Winter CMS and Tailwind CSS. Thanks for stopping by!