The new MBP power efficiency is impressive

I had the 15” 2015 MBP, and now I have switched to the 15” 2016 MBP.

One contentious issue that I have been particularly interested in is battery life.

Being the author of Battery Guru, which has been around for a long time now, and which I have used on the 2012 MBP and up, I have become very accustomed to seeing how much battery a MBP uses in realtime under normal conditions.

I don’t know exactly what Apple or Intel have done right, but the power drain under low usage conditions is now around half of that that the previous MBP’s.

I drew accustomed to seeing 900 milliamps at the very least being drawn at any given point on previous MBP’s, and the power draw would more frequently sit at around 1500-2000 mA. Now I see it happily sitting at 500 mA for minutes at a time.

[For anyone unfamiliar with this terminology: The MBP comes with a ~7000 mAh battery. “mAh” means that it can deliver 7000 mA (milliamps) for 1 hour. So if the battery drain is 7000 mA, then it can be sustained for 1 hour. If the battery drain is 1000 mA, then it can be sustained for 7 hours. So when I now see it sitting there at a mere 500 mA, it shows that the battery is going to last for a full 14 hours if that average load does not increase.]

Fortunately, the power management & status code is open source, and you can see it here.
If you take a look at _populateTimeRemaining you can find this:

{ // discharging
// h = mAh/mA
b->swCalculatedTR = -60*((double)b->currentCap / (double)b->avgAmperage);
}

Which is running the same equation as shown in the annotated image above, although some of the newer batteries have the time remaining prediction built into them, and if that is available the battery status is set to use that instead of making its own prediction. In reality, neither has an advantage in accuracy over the other.

As a side note, it’s interesting to see just how thorough the smarts of a modern smart battery are. Even if you know nothing about programming, you can see what the battery is monitoring & reporting itself just by glancing through the constant names in this function. It monitors & reports everything from the temperature of each cell, to cell imbalance failures, even reporting if there is a blown fuse. Extracted from the same Apple source code file linked to above:

Also of note is that it’s coded to support multiple batteries, and that it loops through both external battery pack(s) as well as the internal battery to calculate the percentage remaining. So, if Apple were to release an external battery it would already be fully supported by the operating system.

And finally, when being calculated by software, the time remaining estimation is manually capped to 10 hours. Also from BatteryTimeRemaining.c:

// Cap all times remaining to 10 hours. We don't ship any
// 44 hour batteries just yet.
if (kMaxBattMinutes < b->swCalculatedTR) {
b->swCalculatedTR = kMaxBattMinutes;
}

Given that the time remaining calculation is calculated by using nothing but the battery drain average over recent time, the only reason behind Apple’s statement that the newer CPU’s are causing unpredictable calculations that I can think of would be because sometimes the CPU moves into a higher power state for a minute or so, and that the time remaining estimate gets updated during the same period, only to be inaccurate because the CPU then switches into a low power state and spends the majority of its time there, or vice versa. But that answer just leaves more questions hanging.

Reducing mA (power draw) rather than increasing mAh (power storage) is the most effective way to increase battery life, which would go a long way to explain manufacturers’ obsession with thinness (which, in electrical terms often directly translates efficiency (i.e., smallness)) in their devices rather than just giving us something that endures. It’s their idea of being to be forward-looking.

While writing this article I put the 2016 MBP and the 2015 MBP side by side and ran them under similar conditions and the 2016 MBP was idling at 430 mA and the 2015 MBP was idling at 619 mA. Then I turned the brightness way up so that they were at the same level, and it was 767 mA vs 1020 mA, which would lead to the idea that a more efficient display is partly responsible for the energy savings.

This article is not intended to be rigorous benchmarking, rather just an observation from a long time author of real time battery drain software who has been paying close attention to this field over the years.
I’m impressed that the new MBP will happily sit at a 500 mA power draw for long stretches of time. This is a greater improvement than I would have thought possible.

This is in line with consumer reports saying that they would get around 19 hours out of a laptop on a single charge. It’s also in line with people reporting that under high load the new MBP lasts a shorter amount of time than the earlier models. It does have a 25% smaller battery, and it is more performant. Under high stress it will use its resources and drain the battery quickly.

My suggestion to anyone looking to maximize battery life out of the new MBP would be to keep an eye on unnecessary resource usage. Personally I find the most frequent culprit of processor usage and power drain to be inadvertently leaving a chrome tab open that is running a gif in the background, or some other thing that’s making at least one CPU core sit at 100% usage. I find that by having Battery Guru (which is free) running in the menu bar, I develop the subconscious habit of keeping an eye on realtime battery drain and hunting down errant processes eating up battery. Most of the time it’s something I’m not even using that is chewing through resources, anyway.

With the advent of USB-C, which makes high quality power banks for a laptop more feasible than ever before, and by having read through their source code for the power management, my prediction is that Apple will be releasing an external battery pack soon. And even if they don’t, third party manufacturers certainly will be.