Playing with fire: dealing with slow hot Macs

Many users complain of performance problems, often associated with their Mac’s cooling fans coming on, sluggish response, and, if they look in Activity Monitor, very high CPU use by kernel_task. There’s a lot of conflicting advice as to how best to tackle this: last week I explained how kernel_task is a symptom of the underlying problem, and not its cause.

There are several blog articles and many comments which recommend those whose Macs appear to be throttled by kernel_task to edit or otherwise tamper with its IOPlatformPluginFamily kernel extension. Common to most if not all are two statements:

  • Those who recommend doing this admit that they don’t know what this kernel extension does, and
  • Everyone disclaims all responsibility if someone follows their recommendation and as a result their Mac is damaged or destroyed.

So what does this mystery extension contain, and what does it do?

In macOS Mojave 10.14.3, IOPlatformPluginFamily.kext contains a little of its own executable code, and five other kernel extensions, which I’ll look at in turn.

ACPI_SMC_PlatformPlugin.kext contains a property list for each supported Mac model up to around 2011-12. Each property list contains hardware-specific settings for CPU and GPU control forming their thermal profile. These include settings for normal, reduced, user low, and user high power, for example.

AppleSMCPDRC.kext is a small, conventional extension which is concerned with PCI management on some older Mac models prior to about 2012.

IOPlatformPluginLegacy.kext is another small, conventional extension which is concerned with IO on some older Mac models prior to about 2012.

X86PlatformPlugin.kext contains many property lists which are each specific to a series of logic boards installed in different models of Mac, which appear to primarily concern models before about 2012. These are IOPlatform Power Profiles, which specify the configuration of the Energy Saver pane for that logic board, its System Sleep Policy, thermal configuration, GPU ‘effort curves’, battery management, sleep and wake settings. These are very detailed compilations for internal heat and power management.

X86PlatformShim.kext is another small, conventional extension which appears concerned with SMC function on older Mac models prior to about 2012.

The extension which has been recommended for doctoring is the first in that list, ACPI_SMC_PlatformPlugin.kext. The most recent models included in that are iMac 12,2 (discontinued 2012), MacBook7,1 (2011), MacBookAir4,2 (2012), MacBook Pro 8,3 (2012), Mac mini5,3 (2012), Mac Pro5,1 (2013), and the Xserve3,1 (2011).

So, I conclude:

  • The suggested ‘fixes’ for high kernel_task CPU usage can only apply to Macs made before about 2012 (those detailed above). I cannot find any suggestions which appear to have any effect on Macs made since then.
  • The suggested ‘fixes’ remove all model-specific settings for the thermal profiles for CPU and GPU. That is inherently dangerous to your Mac.
  • Suggested ‘fixes’ work, when and if they do, by disabling that Mac’s custom thermal controls. At worst, they could prevent your Mac from shutting down when it gets too hot, which in turn could result in a fire.
  • Before even considering trying any of these ‘fixes’, establish that you can afford to replace your Mac’s logic board or even your whole Mac, in the event that this goes wrong. As these models are now so old, supplies of replacement logic boards may be drying up.

If your Mac isn’t so old that it might be covered by a suggested ‘fix’, or you’d rather not risk destroying its logic board, you should treat high kernel_task loads as if they were the problem of fans running at full speed, which is often the case anyway. This article covers the process of systematically diagnosing the cause.

Bear in mind that any runaway process(es) can start to take over the CPU and result in a rising thermal load, which may trigger kernel_task to be used to lock those processes out and allow the CPU to cool. These include old favourites such as the Spotlight metadata demon mdworker, and plenty of extensions, startup items, etc. They can be tricky to identify without taking a look in the log, where they usually leave a trail of distress messages and good clues as to what is wrong.

My two best suggestions for dealing with high kernel_task loads and fans running at full speed are to reset the SMC, and to clean out your Mac’s fans and cooling ducts.

Interestingly, the issue with kernel_task has quite a close parallel in human physiology: sweating, water consumption, and heat. Sweating is one of our primary mechanisms for dealing with thermal load, but requires copious water intake to maintain fluid balance.

To some groups, armies in particular, supplying adequate potable water to support 8 or more litres of sweating per day is too difficult, so there grew the myth that you could somehow ‘train’ people to sweat less. This of course only leads to dehydration, which does reduce your sweating rate – as your body temperature soars and you’re at risk of imminent death from heatstroke.

Stay cool – both of you.