IMac – How to disable/configure macOS Sierra’s auto throttling of the CPU for processor intensive tasks

cpuimacmacosperformance

I'm using an iMac (late 2015) with an Intel core i7 (quad core) 4GHz CPU with 32GB ram and a 3TB Fusion Drive. I'm a software developer working on a huge codebase that used to take about 30 minutes to build and run unit tests on my beast of a machine. Of course, running the build meant that the CPU usage was up through the roof and the fan working at its fastest speed.

I upgraded to macOS sierra yesterday, and my first attempt to build the project I'm working on took three and a half hours! During this time my computer and fan were as quiet as a sleeping baby.

I did some investigation and found that whenever a process uses too much CPU power to the extent of making the fans audible, in just a couple of seconds I see the CPU usage of this process falling down, and after a few minutes, the fan sound goes down too. It seems that in Sierra a feature was added to make sure that the CPU doesn't overheat by throttling the processor usage for high CPU demand processes automatically.

What I need to know is how to disable/configure this feature, because it's killing my productivity. I really love the other great features in Sierra, but I would certainly downgrade if there is no way to disable this auto-throttling.

Best Answer

Here are a few broad steps from a post on "Disable OS X kernel_task throttling" which you will need to try since I don't have an iMac on hand. Strongly suggest you read the post in detail and also understand potential risks before executing this sequence.

  1. Disable System Integrity Protection so you can make system folder edits with steps at
    How do I disable System Integrity Protection (SIP) AKA “rootless” on OS X 10.11, El Capitan?
  2. Boot into single-user mode with Command-S sequence
  3. Mount the filesystem:
    fsck -y; mount -uw /
  4. Backup the IOPlatformPluginFamily.kext extension
    rsync -av /System/Library/Extensions/IOPlatformPluginFamily.kext /Users/Shared/
  5. now delete the IOPlatformPluginFamily.kext extension and restart
    rm -rf /System/Library/Extensions/IOPlatformPluginFamily.kext; shutdown -r now

If/when you want to restore the configuration,
rsync -av /Users/Shared/IOPlatformPluginFamily.kext /System/Library/Extensions

The /Users/Shared/ location for storing extension is a subjective choice. You can backup in any other safe place (even on an external drive). As long as you can retrieve it when you want to rollback this action.