Apple - How to disable the SpeedStep when using MacBook Pro without a battery?
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.
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.
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.