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

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


Solution 1:

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.

Solution 2:

The kernel task soaking CPU cycles is primarily a safety and longevity issue.

The CPU is capable of generating far more heat than the MacBook Pro frame can radiate and to control for failing fans and other hardware failures, the system is going to dramatically reduce the CPU's ability to generate heat when it senses a rapid rise in the measured temperatures - especially when the blowers are not responding as expected or already commanded to run at their maximum RPM values.

You will want to rule out temperature as a cause of this behavior as a first step IMO.

Also, consider replacing the battery as it also has temperature sensors and the firmware might be far more conservative with CPU when it knows that some sensors are no longer reporting for duty, so to speak.

Solution 3:

Apple not only underclocks the CPU to about half, when no battery is present, but also the GPU, either with or without a battery.

I think the reason is not to necessarily force the user to buy a new battery but remains a marketing one. Have you noticed how the MBP AC charger is considerable smaller than most AC chargers for PC laptops? I'm not an expert in watts and voltage but to account for the minimalist and elegant design they didn't make it powerful enough for your MBP to operate. It needs a battery for full power otherwise the AC adapter and your machine could get toasted or simply fail to work.

The GPU throttling was a measure to ensure their brand would get better battery life than the competition, otherwise you would get ~4 hours of usage, not really competitve in the laptop world.

A workaroud for the CPU issue, besides the one you posted, consists in undervolting, which is offered by a shareware app called CoolBook. Unfortunately, it is only supported up to Snow Leopard and has a very strict license policy (per computer, not per user). The safest option is still to get a new battery.

A workaround for the GPU issue is posted here.