Apple - rMBP kernel_task spikes when connecting more than one external monitor

According to Rhys Oxenhams:

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.

The solution he mentions on his blog should work for earlier Macs. For Ivy-Bridge Macs and a little earlier Richard Schwarting has found the appropriate file to disable. Instructions are included below for convenience. I have tried many things, but this works.

  1. Disable kext by renaming it

    cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/Plugins
    sudo mv X86PlatformShim.kext X86PlatformShim.kext.disabled
    
  2. Clear kext cache (not sure if this is needed)

    sudo touch /System/Library/Extensions/
    
  3. Restart

    sudo reboot
    

  • After installing OSX updates you may need to repeat the above procedure if the updates have re-created the kext.

Update for (High) Sierra:

TL:TR

Rename IOPlatformPluginFamily.kext/ACPI_SMC_PlatformPlugin.kext/[MacModelIdentifier].plist

Step by step:

  1. Start intro Recovery Mode (press CMD + R while startup)
  2. Utility > Terminal csrutil disable (Disable system file protection)
  3. Restart and rename /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/[MacModelIdentifier].plist (Mac > About > System Report > Model Identifier) to bugfix.plist (or something else)
  4. Restart and check if kernal_task process is down below 10%
  5. If successful restart again in Recovery Mode and enable system protaction again with csrutil enable

Tested and worked for me at 10.13.2 on Early 2011 MacbookPro.

Source with pictures (german) http://www.couchpiratin.de/mac-zu-langsam-kernel_task-cpu-fehler-beseitigen/