Marco.org

I’m : a programmer, writer, podcaster, geek, and coffee enthusiast.

Low Power Mode on the Mac

Laptop battery life is decreasingly relevant to me as more airplanes offer power outlets. But sometimes you lose that lottery, as I did on my latest 8-hour daytime flight.

Apple’s “Up to 10 hours” claim doesn’t apply to my work,1 which is usually a mix of Xcode, web browsing, and social time-wasting, so I knew I’d have to seriously conserve power.

Sometimes, you just need Low Power Mode: the switch added to iOS a few years ago to conserve battery life when you need it, at the expense of full performance and background tasks.

There’s no such feature on Mac laptops, but there should be. It could:

And the big one:

Back in 2015, I experimented with disabling Turbo Boost and discovered that it reduced performance by about a third, but also boosted battery life by almost as much. Since then, I’ve been running Turbo Boost Switcher Pro to automatically disable Turbo Boost when I’m running on battery power, and it has been wonderful: I made it through that 8-hour flight only because Turbo Boost was off.

Over the last few days, I’ve run battery tests on my 2018 13-inch MacBook Pro with the (awesome) 2.7 GHz i7 and my 2015 2.2 GHz 15-inch3 to see how far I could push the battery life using Volta, which can disable Turbo Boost and/or set wattage limits on the CPU.

My test was based on the “Heavy” script from last time, but using xcodebuild every few minutes with Overcast’s current codebase (which is larger and includes some Swift). Improvements are in green and performance reductions are in red:

15-inch 2015 MacBook Pro (2.2 GHz quad-core i7)

  Battery life Geekbench single/multi xcodebuild
Normal 3:36 3963/13864 43.9s
No Turbo 5:06
+42%
2796/9917
−29/28%
63.4s
+44%

13-inch 2018 MacBook Pro (2.7 GHz quad-core i7)

  Battery life Geekbench single/multi xcodebuild
Normal 3:09 5412/18983 34.3s
28W 3:28
+10%
5401/16326
−0/14%
37.4s
+9%
18W 4:05
+29%
5248/14133
−3/26%
43.5s
+27%
12W 4:44
+50%
4818/11835
−11/38%
48.2s
+41%
No Turbo 5:05
+61%
3624/13324
−33/30%
48.9s
+43%
6W 6:24
+103%
4065/7596
−25/60%
76.1s
+121%

It’s impressive how much faster this new 13-inch model is than the best laptop ever made due to significant CPU and SSD improvements.

Dropping the wattage to 6W, the thermal limit of the fanless 12-inch MacBook, interestingly (but not surprisingly) makes it perform effectively identically to the best 12-inch MacBook in Geekbench. This is an extreme option, but one I’d occasionally take if offered. It roughly doubles compilation times, but also doubles the battery life.

This ratio holds for most other configurations: the gain in battery life is about as large as the loss in heavy-workload performance. That’s a trade-off I’d gladly make when I need to maximize runtime.

The best bang-for-the-buck option is still to just disable Turbo Boost. Single-threaded performance hurts more than with wattage-limiting, but it’s able to maintain better multi-threaded performance and more consistent thermals, and gets a larger battery gain relative to its performance loss.

And Volta, which offers both wattage limits and Turbo disabling, requires disabling System Integrity Protection to install an unsigned kernel extension, which I really don’t recommend. Turbo Boost Switcher, which doesn’t offer wattage control, works with SIP using a signed extension and its Pro version has more convenient features for automatic toggling.

For now, I’m going to continue to happily run Turbo Boost Switcher Pro to selectively give myself better battery life, and I recommend it for anyone else with the same need.

But what I ultimately want is for a true Low Power Mode built into macOS that could provide this sort of CPU throttling and software changes, which would ultimately achieve even greater gains.


  1. Whose work does get 10 hours out of a MacBook Pro? None of the use-cases on the marketing page — Photography, Coding, Video Editing, 3D Graphics, and Gaming — are likely to achieve even half of that in practice. ↩︎

  2. I’ve heard that 15-inch models are wired such that the discrete GPU is required when external displays are connected. Otherwise, whether it’s used or not is a software decision, and gfxCardStatus can override it in certain conditions. ↩︎

  3. It’s not brand new, so it’s not a perfect comparison, but the battery only had 90 cycles before this test. ↩︎