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.


Disable kext by renaming it

cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/Plugins
sudo mv X86PlatformShim.kext X86PlatformShim.kext.disabled

Clear kext cache (not sure if this is needed)

sudo touch /System/Library/Extensions/

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:


Start intro Recovery Mode (press CMD + R while startup)
Utility > Terminal csrutil disable (Disable system file protection)
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)
Restart and check if kernal_task process is down below 10%
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/