I while ago, I found a great article on Slashdot that shows how Windows XP manages variable speed CPUs. Well, at least it applies to Intel Speedstep technology. If you have an Intel processor (like the Core 2 Duo T7200 in my laptop), you can take full advantage of the different CPU frequency algorithms to get the desired performance from your machine.
The gist of the article is that you can’t directly control the algorithm being used with the Windows XP power properties. There are a number of Power schemes available that have different algorithms pre-associated with them. In order to get your laptop to function the way you want, you need to find out if one of the existing power schemes is appropriate or if you need to create a new one.
Here are the algorithms available (taken directly from the article):
What the processor does Microsoft’s nomenclature What we called it in Intel CPU(s) run in highest performance state None HFM (Highest Frequency Mode) CPU(s) intelligently select a performance state based on demand Adaptive Adaptive, SpeedStep CPU(s) run in lowest performance state Constant LFM (Lowest Frequency Mode) CPU(s) begin in lowest performance state and then get slower and slower via software manipulation Degrade Why are they doing that?!
Here are the steps to take, to optimize your laptop the way you’d like it
- You need to decide what you want your CPU to do when your computer is plugged in and when it is running on its battery. For me, I want it to run based on demand when I’m plugged in and when I’m on battery. Some may want it to run at full speed when they are plugged in, e.g., for playing games, and others may want it to run at the lowest frequency when on battery, e.g., when maintaining battery life and temperature.
- When you know what you’d like, determine which power scheme is appropriate for you.
This is where the real meat of the article is. Because the power properties don’t TELL you which algorithms they use, you need to use the command line to determine what they are preset at.
Open a command prompt and use the powercfg command to see what the schemes do. You can use the /list argument to see which schemes are available and the /query argument to see what algorithms are used in each scheme. Here is an example for determining which algorithms are used by the “Portable/Laptop” scheme:
powercfg /query portable/laptop
Field Description Value
Numerical ID 1
Turn off monitor (AC) After 15 mins
Turn off monitor (DC) After 1 mins
Turn off hard disks (AC) Never
Turn off hard disks (DC) After 3 mins
System standby (AC) Never
System standby (DC) After 10 mins
System hibernates (AC) Never
System hibernates (DC) After 30 mins
Processor Throttle (AC) ADAPTIVE
Processor Throttle (DC) ADAPTIVE
The important part for this example is the Processor Throttle settings. AC is when you are plugged in and DC is when you are on battery. For me, ADAPTIVE is the setting I want so I can stick to the the Portable/Laptop Scheme.
- Well, after you’ve gone through the schemes, and determined which one suites your needs, you can go back to the Power properties panel, choose that scheme, and then customize the shutdown delays for the various systems. You can, of course, adjust these too with the powercfg utility but the GUI is easier.
- If you didn’t find a scheme you like, you can create your own. Just choose one of the existing schemes, save it under a different name, and then use the powercfg utility to change the throttling to what you’d like. You could modify the existing schemes this way too if you don’t care for the defaults Microsoft provided.
To change the throttling algorithm for your scheme, you use the /change argument. Here is an example to change your scheme for the battery to use the ADAPTIVE algorithm.
powercfg /change myscheme /processor-throttle-dc adaptive
There you have it. This’ll suit my needs just fine for the time being. I’ll need to adjust these properties again when 30 year batteries are released on the market!