How to Undervolt a MacBook

Briefly, undervolting is the process of manipulating a processor’s P-state tables to cause it to run at a lower voltage, while keeping frequency unchanged. This has no effect whatsoever on performance, but can extend battery life and reduce heat dissipation.

Undervolting cannot damage your CPU, but it can cause your machine to crash. You should be prepared to boot your mac into safe mode, in the event that something goes awry.

I’m going to assume a basic knowledge of undervolting, and merely describe the process and results for my MacBook. (For more detailed info, there’s a great article at Nordic Hardware.)

OK lets get started. Here’s what we need:

To start, we should measure current battery life. In the interest of time (and consistency) I decided to measure with the system at 100% load. This is totally atypical, but I could not imagine a fair way to reproduce “typical usage”. Here’s the process I followed:

  1. Open Energy Saver, Settings for Battery: Set both sleep sliders to “never”
  2. Kick off CPUTest (2 instances, unlimited repetitions)
  3. Start a stopwatch and yank the power plug

My system did an emergency shutdown 1 hour and 26 minutes later. While performing this initial test the exhaust fan hit 6200 RPM fairly quickly, and the CPU eventually stabilized around 180°F.

Now that we have a baseline, it’s time to undervolt. Upon launching CoolBookController you will see your default P-state table. Mine looked like this:

Default P-state Settings

Notice how the voltage increases with each frequency step. In all likelihood, the defaults are overly conservative. Our goal is to find the minimum stable voltage for each P-state.

The slowest clock speed will already use the lowest possible voltage by default. The plan is to apply that same voltage to successively higher clock frequencies, until the machine crashes or fails our stress test. A quick note on the CPUTest tool: it seems advisable to run two instances (this is a dual core CPU) for at least 10 minutes before declaring stability.

Here are my notes from the process:

MHz Volts Result
1002 0.9500 default
1169 0.9500 OK
1336 0.9500 OK
1503 0.9500 OK
1670 0.9500 OK
1837 0.9500 OK
2004 0.9500 crash
2004 1.0000 test errors
2004 1.0125 OK

Success! I am able to run the minimum voltage all the way up to 1.8 GHz, and for the top speed of 2 GHz, I can drop all the way down to 1.0125v. Based on these results, I created and saved the following new P-state table. Notice how the voltages are lower across the board:

Undervolted P-State Settings

Now comes the moment of truth where we repeat our battery life tests.

In my case, while the fan still hit 6200 RPM, this time the CPU only reached 165°F. Considering that room temperature was about 65°F during the tests, I saw +115°F before and +100°F after. This represents a 13% reduction in maximum temperature.

Better still, my time-to-empty improved from 1:26 to 1:39 — a whopping 15% greater battery life. Not bad for a few hours work.

Update:
Well, it’s been about two weeks and I’m happy to report zero crashes in that time. My MacBook is completely stable.

Advertisements

9 Responses to “How to Undervolt a MacBook”


  1. 1 Nathan Zook June 25, 2007 at 6:58 am

    And after all of that work by the test engineers to determine the minimum safe voltatge, too…

    Yes, we supply the vmin number with a “safety margin”. We do this precisely because we know that our test tools do not hit the worst case scenario. And the public test tools don’t hit as hard as the internal test tools, for various reasons.

    If you run your processor out of spec–overclocking, undervolting, whatever–expect that your system will go south when you are least prepared for the consequences. By “consquences”, I mean loss of all hd data–if you’re lucky.

  2. 2 Mark June 25, 2007 at 9:35 am

    Nathan,

    I think we can agree that it’s possible to fit a line to a scatter plot. I’m just bored / curious enough to figure out where my point actually fell 🙂

    I think your comment on “loss of all hd data” is FUD. Has this ever actually happened to anyone you know? In my wildest dreams I can only barely imagine writing a few corrupt bytes to disk (which, admittedly, would really suck). The far and away #1 most common sign that you are pushing your luck is: your machine crashes. In either case, I fully assume the risk.

    I’ll be sure to update this post with a report on the long term stability of my machine. Thanks for the comment.

    –Mark

  3. 3 Nathan Zook June 27, 2007 at 6:30 am

    Achk! I’ve been besmirched! FUD? Me? Well…. I am a professional paranoid. (Validation engineer) And in my role as a validation engineer, I have been in arguments about what kind of guard band is needed around my test results to protect the consumer. I really wish I could say that I had won those arguments.

    You thought I was talking about a bad data write to the platters? I mean a bad write to a configuration register. You know, the one that controls your password to the hard drive?

  4. 4 Mark June 27, 2007 at 8:47 am

    Haha, well maybe Intel’s validation engineers are even more paranoid than you. I mean, consider Andy Grove’s example.

  5. 5 Nathan Zook June 28, 2007 at 4:55 pm

    Oh. As a clarifier, those arguments were at a former, evil company. Not the fine folks who are my current employers…. 🙂

  6. 6 Paul July 22, 2007 at 11:51 am

    You won’t lose all the data on your hard drive, as that storage is non-volatile. Lowering your CPU voltage may have two undesirable concequences,
    a) crashing your CPU due to timing violations, i.e. your CPU is not fast enough to keep up with the clock, this can usually be corrected for by reducing clock speed
    b) getting memory/cache errors, this can mess up your runtime system, also, if your system has crashed before a hardisk “sync” you may lose some data you thought had been saved. I hope the cpu test performs a ram bist ….

    Reducing CPU frequency is the easiest surefire way to reduce power. Much of the consumed power should be dynamic, proportional to clock frequency. Though that may be debatable for a very fast new Intel processor. They may run so hot that if you have a leaky one, leakage power dominates on a hot day.

    Reducing voltage is also good, however make sure you have plenty of margin to failure, or you will end-up crashing your system when the temperature changes.

    Also, realize that over a few years, your microprocessor will likely slow down ~5%, i.e. the maximum frequency for given voltage will change by about 5%, so make sure that you have at least this much margin in either frequency or voltage (10%) or you will have problems later.

  7. 7 Mark July 22, 2007 at 1:28 pm

    Hey Paul,

    I’m pretty sure that dynamic power varies directly with the *square* of Vdd. So, I think strictly speaking you have more leverage there than you do by messing with frequency. Although, admittedly, you benefit by reducing either.

    Here’s a decent set of slides from University of Texas that backs me up. Check out the bottom of page 7.

    Can you explain why a microprocessor will likely slow down over a few years? I have never heard anything like this before. Does this have to do with electromigration?

  8. 8 Paul July 23, 2007 at 11:46 am

    You’re right, dynamic power varies with the square of voltage (and leakage is even more sensitive), my point is that reducing frequency will reduce power and won’t cause your chip to fail. Voltage is a great way of reducing power without sacrificing performance, but you have to be careful that you leave some margin.

    Slowdown in modern CPUs is largely due to NBTI, negative bias temperature instability, however if you significantly overvoltage your device you may get some hot-carrier degradation as well.

  9. 9 Mark July 23, 2007 at 12:51 pm

    Paul,

    > my point is that reducing frequency will reduce power and won’t cause your chip to fail.

    Ahh yes, a very a good point.

    I needed to do some research to understand your comments. Here are some links for posterity:
    http://en.wikipedia.org/wiki/NBTI
    http://en.wikipedia.org/wiki/Hot_carrier_injection
    http://en.wikipedia.org/wiki/Electromigration

    Thanks,
    Mark


Comments are currently closed.




%d bloggers like this: