Idiotic OSX Approach to Cooling

My air conditioner died a few days ago and while it is a bit uncomfortable (I’m in Thailand and it is the hot season, so it gets up to around 34c in the office), it is insufferable to work when a 90 thread kernel process has 90% of the processor. It is really hard to troubleshoot a 90 thread kernel process when it is reporting as a single thread (and can't be killed, or the system dies).

Apparently, OSX detects a need to cool the system, the result being some brain-dead engineer devised it so a hot system uses more processor (likely the opposite intended). For the full story, see this and this. The thinking is that as a system heats up, certain parts of a process are spun out into a single kernel task in a bid to cool things down. However, of course that kernel task, since it has a whole bunch of little idiotic things to do, grabs priority and sacks the processor, running the fan batshit crazy, and slowing the heaping mess to a crawl.

Thanks Apple for taking three hours of my life suffering through this, and finally getting a fix.

Turn off race conditions in OSX

First, get the model of the device with:

system_profiler -detailLevel mini | grep "Model Identifier:"

Next, go into the kext files:

cd /System/Library/Extensions/IOPlatformPluginFamily.kext/

cd Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/

cd Contents/Resources/

Then move the plist for the particular model, e.g.,

su mv MacBookAir4_2.plist /Users/jeff/

I should add this to a collection of stupid Apple tricks in the future (that is, the next one I encounter).

El Capitan fix

There is another thing for the El Capitan release.


The useful app smcFanControl can help set minimum rpm for the fan, as well as display rpm and temperature.