MacOS – How to disable the SpeedStep when using MacBook Pro without a battery

batterykernelmacbook promacos

First of all, the specs:

  • MacBook Pro (15-inch, Early 2011)
  • OS X 10.9.1 (Mavericks)
  • 2.3 GHz Intel Core i7
  • 8 GB RAM

The Problem

Recently, my battery randomly died and I had to disconnect it, otherwise, my computer would not properly turn on (MacBook Pro was restarting itself and turning off over and over again).

Now, every time I plug-in the power cable, it starts straightaway (even without pushing the power button), turns off after a few seconds, and then starts normally. Weird.

Nevertheless, the main problem is, after some time, the laptop becomes VERY slow. By "VERY slow" I mean – games become unplayable (FPS drop from 60 to 6) and kernel_task starts using more than 500% of the CPU. Moreover, the mouse speed significantly increases.

I tried the interrock's (the 10th post) guide but it does not seem to work correctly and caused me a kernel panic related to the SleepEnabler.

P.S. I have read somewhere that Apple does this "underclocking" intentionally, for safety or marketing (to buy a new battery) reasons. Please correct me if I am wrong.

OS X will intelligently throttle CPU based on certain
conditions in an effort to a) prolong battery life and b) avoid system
damage (through excessive heat). Apple does not "sabotage" machines in
an effort to get customers to buy new batteries. – cksum

Any help would be appreciated. Thank you in advance.


Solution (That Worked For Me)

https://web.archive.org/web/20190507215911/http://www.rdoxenham.com/?p=259

Best Answer

It does seem like you have a problem with your battery, although it's likely that it's only adding to the underlying issue which you've touched upon.

The concept behind Speedstep seems good, however, the way in which it works is quite bad — especially when it comes to kernel_task. I believe it's the reason you're seeing such a dramatic slowdown — because this "feature" is consuming the majority of your MacBook Pro CPU so it can apparently cool your system down and save energy.

Intel SpeedStep Technology allows the system to dynamically adjust processor voltage and core frequency, which can result in decreased average power consumption and decreased average heat production. (from Intel)

What this equates to is you end up losing a significant portion of the CPU while SpeedStep hijacks kernel_task and continually carries out low-overhead tasks until the CPU temperature drops. Your system essentially becomes bogged down so you can save energy regardless if you want to or not. I would imagine that most people expect to be able to use all of their CPU power when they want to — not when their system allows them.

Luckily this “feature” is built into a kext, in which each model identifier specifies how to control the temperature of the CPU. It's a simple fix, and most people that have similar issues to what you describe are quite happy once they realize this. I take no credit for this fix, for it's all thanks to Rhys Oxenhams who researched this and came up with a solution.