Page 1 of 2 12 LastLast
Results 1 to 10 of 15

Thread: Undervolting

  1. #1

    Undervolting

    Anyone here undervolt? In Windows or Linux?


    Is there any easy way of doing it from linux? (I just tried by modifying the powernow-k7.c source, think it worked but can't really tell...)

  2. #2

    Re:Undervolting

    umm - no - to make processor run cooler?

  3. #3

    Re:Undervolting

    Yeah, you can sometimes get it to run at a lower voltage but same CPU speed. So it runs cooler and uses less power (good for battery operated machines!)

  4. #4

    Re:Undervolting

    Interesting. Is there any reason not to do this on a mobile device (ie, dangerous, errors, etc etc)? I just might check it out. I'm getting an old used laptop this summer sometime and I could definitely use any extra battery life I can get.

    What exactly did you change? By taking a glance at the code, it looks like this can be accomplished with a call to change_vid in powernow_acpi_init.

    Really, if you add a few printk statements into the code you should be able to determine what the final voltage is.

    Here's an interesting test you could do. Write a quick cpu-bound program. Make it count up to 10 and back, and make it go forever in a while loop. Now charge your laptop to the limit and boot into single user mode, and run the program. Come back into the room every half hour or so to check on the battery life. Time how long it takes to drain. Now make the adjustments to the kernel and perform the exact same procedure. Is there a noticable difference?

    DISCLAIMER: When I say I glanced at the code, I mean glanced. No research was performed, no thought about how this might kill a CPU. Just a quick mental flow trace and a bit of inferrence. If you do get it working, let us know how you did it so we can do the same, but know that in no way is my advice safe and/or sound...that's for your verification

  5. #5

    Re:Undervolting

    Code:
    static int get_ranges(unsigned char *pst)
    {
        ...
        vid = *pst++;
        vid++; /* I added this */
        powernow_table[j].index ...
        ...
    }
    And I through in some printk statements so it'd show me the CPU/Voltage every time it changed. My idea behind this was it will lower the voltage one "notch" for each clock speed. I tested it on my box, ran stable at all the different clock speeds. I'm going to do what you suggested to test battery run-down but haven't gotten around to that yet. Also I think I'll make a kernel module or kernel patch that gives us an easy way to change this from userspace (Like add something to the cpufreq that already lets you set the speed)

    And of course, be careful if you are doing this.

  6. #6
    Mentor
    Join Date
    Jul 2001
    Posts
    1,666

    Re:Undervolting

    Can you not do it in the bios? My friend runs his athlon 2500+ undervoltage. It makes it run a lot cooler, and he still has a stable overclock as well.
    A decent processor will undervolt happily.

  7. #7

    Re:Undervolting

    [quote author=CP link=board=3;threadid=9364;start=0#msg84872 date=1087684066]
    Can you not do it in the bios? My friend runs his athlon 2500+ undervoltage. It makes it run a lot cooler, and he still has a stable overclock as well.
    A decent processor will undervolt happily.
    [/quote]

    For me I'm doing it for a laptop, so I can't do it from the bios.

  8. #8

    Re:Undervolting

    Well I've modified powernow_k7.c to let the VIN be controlled by userspace. But I didn't feel like making my own /sys entries so I let cpufreq_userspace.c handle that, but I didn't want to modify that so I made a little hack...

    Normally echo 1526257 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed would set your speed to 1.5GHz
    With my mod, it still does, but echo $((0x11 + (2 << 24))) > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed would set the VIN to mode 0x11 (Default on mine, 1.25v)

    So I've just done a 0x13 (1.20 volts) and she seems to be running OK. (Before I only tried 0x12 for full speed)

    Also echo 42949668 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed will show you the current VIN.

    I'll play with this a bit more then try to clean up the user interface side of things...

    Anyone daring enough to try? I've only modified powernow so you need a powernow Athlon/Duron/XP-M to use it.

    @Tyr_7BE: I did a battery run down test using the cpuburn program (burnK7 actually) let it run for an hour on the 2 different settings (0x11 and 0x12, 1.25v and 1.225v respectively). The battery had 5% after the hour with 0x12. Not a great gain, but then again I only went down .025v...

    [edit]Okay I slowly went from 1.250 down to 1.100, 1.100 causes a segfault/invalid kernel paging request, on running "top" so that's when I killed burnK7 and upped it back to 1.125.[/edit]

  9. #9
    Moderator
    Good Guru
    Schotty's Avatar
    Join Date
    Jul 2001
    Location
    Milwaukee, WI
    Posts
    5,760

    Re:Undervolting

    Undervolting is okay, but realize that the cpu will not have all the voltage needed to work at optimal. You WILL have a performance lag. Unless its a laptop, I wouldnt.

  10. #10

    Re:Undervolting

    [quote author=Schotty link=board=3;threadid=9364;start=0#msg84921 date=1087778927]
    Undervolting is okay, but realize that the cpu will not have all the voltage needed to work at optimal. You WILL have a performance lag. Unless its a laptop, I wouldnt.
    [/quote]

    Not completely true.

    What happens if you have a CPU undervolted to a level it shouldn't be? Well it will seem to work, and then give out bad data. (Or not work at all). For example I went to low and top segfaulted and I got a bit of a kernel error.

    However just like overclocking you /can/ get something for nothing. When I'm talking about my CPU running at 1.25v that's not completely accurate, different motherboards tend to either over or under volt, being exact is hard. And AMD gives more voltage than needed "just in case". Voltage doesn't directly effect speed, it's just that you need more voltage for higher clock speeds, but keeping the same clock speed and cutting voltage will not give you a performance lose, however it might make your system crash.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •