Customize your laptop speed for temperature and performance

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

  1. 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.
  2. 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
    ----------------- -----
    Name Portable/Laptop
    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.

  3. 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.
  4. 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!

3 Responses to “Customize your laptop speed for temperature and performance”


  1. LarsH

    Hi… Thanks for this useful info.
    I’m wondering, what do the algorithms do with regard to temperature? E.g. if the “None” algorithm means “CPU(s) run in highest performance state”, does it ignore temperature as well as demand? If so, can selecting this mode jeopardize my CPU’s lifespan? And if “Adaptive” means “CPU(s) intelligently select a performance state based on demand”, does that mean it’s not based on temperature?

    Right now I have my Dell Latitude set on Portable/Laptop scheme, so it should be Adaptive; and the behavior I seem to observe is that it slows down when the core temperature (according to the Core Temp utility) is high… even though demand is also high (I’m runing a graphic-intensive game). You would expect high CPU demand to result in high frequency, so apparently that’s being overridden by temperature concerns. I wonder, is it safe to override that? And if so, how?

    Thanks,
    Lars

  2. Dennis

    I don’t know of any specific overrides included in the power settings. If your CPU really is slowing down when it gets hot,then perhaps there is a built in function for protection or a 3rd party application that is doing the tuning.

    You can see what processes are running and find out what each of them does. You might also check your specific model CPU to see what the expected behavior is.

    Good luck!

  3. Chris

    Excellent info. I’ve done a lot of overclocking on PC’s in the past. When I started using laptops, I was constantly running out of juice, so I started using overclocking theory… backwards. I don’t run any heavy duty apps on the laptop, so I didn’t need the full speed of the cpu, so I dropped the multiplier down a few notches to lower the clock speed, and was able to reduce the CPU & RAM voltage. That in addition to some of the tweaks listed above gave me an extra hour or more of run time which is a huge improvement for me.



css.php