The kextd
is a process that handles loading and unloading kernel extensions. So if the system is going nuts with kextd
usage it could mean there is a corrupted kernel extension. And this could be related to Spotlight reindexing the system after the upgrade. In fact, I would bet that is the case since Spotlight always reindexes—and it seems to take forever—after any system update.
The quick/easy way to see if Spotlight is in action is to look at the magnifying glass icon in the top right area of the finder control bar. If that magnifying glass has a small dot in it that is pulsing in and out and if you then click on the Spotlight magnifying glass it says something about indexing in progress, then there you go.
Another—more radical—way to deal with this if it’s not spotlight is to actually adjust the way the system kernel reacts to certain kernel texts by essentially “hacking” the IOPlatformPluginFamily.kext
to remove your system from that kernel process. More details here but here is the long and short of it. As the site says—and I will restate—this is a radical method to deal with the issue and might result in the system being unusable. So proceed at your own risk. But honestly, when you look at how easy it is to roll this change back I would just not worry too much… Just worry enough.
Anyway, go into the Terminal and type this:
system_profiler -detailLevel mini | grep "Model Identifier:"
Now wait a second or two. The system should return something like this; running this on my Mac Mini running Mac OS X 10.9.5 (Mavericks) so it returns the following:
Model Identifier: Macmini6,1
Next confirm that IOPlatformPluginFamily.kext
is running by typing in this:
kextstat | grep IOPlatformPluginFamily
The value I get returned is this:
85 7 0xffffff7f81066000 0xa000 0xa000 com.apple.driver.IOPlatformPluginFamily (5.7.1d6) <10 7 6 5 4 3>
And as explained on the site I am linking to:
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.
Now type in the following to get into the nitty gritty of ACPI_SMC_PlatformPlugin.kext
within IOPlatformPluginFamily.kext
:
cd /System/Library/Extensions/IOPlatformPluginFamily.kext/
cd Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/
cd Contents/Resources/
Yes, that is a lot of cd
items that could probably be one line, but it does show the overall process of what you are attempting to do. Or you could just do this massive cd
as a one liner:
cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/
Now while in there, run this ls
command to count the items in there:
ls | wc -l
On my system, I get the following:
50
Which means 50 different systems have profiles in ACPI_SMC_PlatformPlugin.kext
. You can also just run ls -la
like this to see the whole list if you wish. But for now, find yours by running an ls
command like this:
ls MacBookPro*
Which will list all of the MacBook Pro profiles. So let’s say your MacBook Pro has the system identifier:
MacBookPro5,5
Then the connected profile in ACPI_SMC_PlatformPlugin.kext
would be:
MacBookPro5_5.plist
Now we want to move that profile out of ACPI_SMC_PlatformPlugin.kext
so the system does not act on that. You can do it like this using sudo
:
sudo mv MacBookPro5_5.plist ~/
You’ll be asked for your password. After you enter that the file MacBookPro5_5.plist
will be moved to your home directory (aka: ~/
) which effectively neutralizes it from ACPI_SMC_PlatformPlugin.kext
.
Now just restart your machine and see what happens. Chances are it will clear up the issue of kextd
CPU usage. If it doesn’t, something else has happened.
If none of what we just did makes you feel comfortable and you want to roll this change back, just move the MacBookPro5_5.plist
file back like this:
sudo mv ~/MacBookPro5_5.plist /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/
And restart your machine. The profile will now be back and active in ACPI_SMC_PlatformPlugin.kext
and you will be back to the way you started.
kextd
, notkernel_task
.