So I've had this i7-3820QM W530 Thinkpad for about 5 years but only during my upgrades to Win 11 have I begun digging into some heat and performance issues.
Since I use this machine plugged in 95%+ of the time I apparently never noticed this horrible, horrible throttling that is apparently baked into the system.
Apparently, though this machine is a 2.7 GHz (3.5 GHz on Turbo) when running on battery power it always throttles down to 1.2 GHz!!
There isn't a lot of talk about this (and harder to find because it is a 10 year old system). But I have found a few posts scattered about the interwebs mentioning it as well as it clearly spelled out on this ThinkPad Wiki:
I haven't tried to overclock, but I have tried to get past the battery throttling. Yesterday I did, in fact, load a modified BIOS. I'm not sure if TS would have worked for me prior to this. I have not really changed any parameters yet in my BIOS that have become available since unlocking, and I believe most of the behavior I describe would occur even with the official BIOS.
Ways to get around the battery throttle:
- Apparently, this throttling to 1.2 GHz also only occurs if you are using the Discrete NVIDIA K2000M GPU. This laptop supports Optimus to switch between the dedicated and discrete cards automagically. But if you have the BIOS set to anything but "Integrated/Internal Only" the throttling occurs. IOW, if the NVIDIA device shows in Device Manager, the throttling occurs. While the GPU isn't stellar, it is something I am not planning on disabling and therefore this throttling on battery is an issue.
- What I have also discovered is that if I disable SpeedStep in the BIOS the throttling does not occur. However this apparently also disable any Boost feature. So the processor can only run at up to 2.7 GHz when plugged in. However it does not throttle down to 1.2 GHz when running on battery. This is a possible solution, but also not preferred as you lose all Turbo Ability. It also, like the above option, requires restarts and BIOS modifications to switch between modes.
Using ThrottleStop:
ThrottleStop does seem to work for me - to some extent. I'm hoping that I can figure out how to make it more reliable.
What I have found is that if I am on battery and being throttled to 1.2 GHZ, unchecking SpeedStep has no effect.
What I need to do is disable SpeedStep prior to unplugging my battery.
Seemingly, the power mode switch over is what trigger SpeedStep into action (?), so disabling it prior to unplug is required to prevent it from kicking in.
It appears that once on/off SpeedStep changes the CPU it is "locked" into that mode until another power change event with a different setting.
For instance, if I disable SpeedStep after unplugging (and therefore would still get locked in 1.2 GHz mode), then I plug back in to power, I am still limited to 1.2 GHz because SpeedStep was not available to kick it back up!
This might not normally be an issue - assuming you had power handy and could always plug-in/unplug to reset your setting...
My issues:
I want to be able to disable/enable SpeedStep on battery for times where I may not have AC power!
For instance. Let's say I go on a plane and I did not disable SpeedStep prior:
When my laptop boots up I will not be able to uncheck it at this point and have it take effect, since it appears to need a power event.
Additionally, lets say I did disable SpeedStep so that my processor could run full speed on battery before I unplugged:
Then, after say 30 minutes I want to revert to lower clock in order to extend battery.
I am unable to do this without plugging it back in (or perhaps a full reboot).
In fact, even if I try to use the Windows power plan to limit the maximum CPU it seems to have no effect without SpeedStep having been enabled.
Are my observations in line with how this is supposed to work? Is there any way around this?
In short, it seems disabling SpeedStep doesn't just revert you to "manual" control of the CPU, it actually takes away the ability to move it into any state and simply leaves it locked to its last state (at least in these experiments).
Is there any hope?
Since I use this machine plugged in 95%+ of the time I apparently never noticed this horrible, horrible throttling that is apparently baked into the system.
Apparently, though this machine is a 2.7 GHz (3.5 GHz on Turbo) when running on battery power it always throttles down to 1.2 GHz!!
There isn't a lot of talk about this (and harder to find because it is a 10 year old system). But I have found a few posts scattered about the interwebs mentioning it as well as it clearly spelled out on this ThinkPad Wiki:
Known Issues
- ...
- Overclocking is not possible due to locked BIOS, even on the XM edition processors. This also affects the usability of ThrottleStop. The only fix is to hardware flash a modified BIOS.
- Throttling occurs on battery in quad core configured versions. The clock is then limited to 1.2 GHz.
I haven't tried to overclock, but I have tried to get past the battery throttling. Yesterday I did, in fact, load a modified BIOS. I'm not sure if TS would have worked for me prior to this. I have not really changed any parameters yet in my BIOS that have become available since unlocking, and I believe most of the behavior I describe would occur even with the official BIOS.
Ways to get around the battery throttle:
- Apparently, this throttling to 1.2 GHz also only occurs if you are using the Discrete NVIDIA K2000M GPU. This laptop supports Optimus to switch between the dedicated and discrete cards automagically. But if you have the BIOS set to anything but "Integrated/Internal Only" the throttling occurs. IOW, if the NVIDIA device shows in Device Manager, the throttling occurs. While the GPU isn't stellar, it is something I am not planning on disabling and therefore this throttling on battery is an issue.
- What I have also discovered is that if I disable SpeedStep in the BIOS the throttling does not occur. However this apparently also disable any Boost feature. So the processor can only run at up to 2.7 GHz when plugged in. However it does not throttle down to 1.2 GHz when running on battery. This is a possible solution, but also not preferred as you lose all Turbo Ability. It also, like the above option, requires restarts and BIOS modifications to switch between modes.
Using ThrottleStop:
ThrottleStop does seem to work for me - to some extent. I'm hoping that I can figure out how to make it more reliable.
What I have found is that if I am on battery and being throttled to 1.2 GHZ, unchecking SpeedStep has no effect.
What I need to do is disable SpeedStep prior to unplugging my battery.
Seemingly, the power mode switch over is what trigger SpeedStep into action (?), so disabling it prior to unplug is required to prevent it from kicking in.
It appears that once on/off SpeedStep changes the CPU it is "locked" into that mode until another power change event with a different setting.
For instance, if I disable SpeedStep after unplugging (and therefore would still get locked in 1.2 GHz mode), then I plug back in to power, I am still limited to 1.2 GHz because SpeedStep was not available to kick it back up!
This might not normally be an issue - assuming you had power handy and could always plug-in/unplug to reset your setting...
My issues:
I want to be able to disable/enable SpeedStep on battery for times where I may not have AC power!
For instance. Let's say I go on a plane and I did not disable SpeedStep prior:
When my laptop boots up I will not be able to uncheck it at this point and have it take effect, since it appears to need a power event.
Additionally, lets say I did disable SpeedStep so that my processor could run full speed on battery before I unplugged:
Then, after say 30 minutes I want to revert to lower clock in order to extend battery.
I am unable to do this without plugging it back in (or perhaps a full reboot).
In fact, even if I try to use the Windows power plan to limit the maximum CPU it seems to have no effect without SpeedStep having been enabled.
Are my observations in line with how this is supposed to work? Is there any way around this?
In short, it seems disabling SpeedStep doesn't just revert you to "manual" control of the CPU, it actually takes away the ability to move it into any state and simply leaves it locked to its last state (at least in these experiments).
Is there any hope?