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.

smcFanControl

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