Open Letter to Apple: Increase Battery Life by 10–150% Using Software

Geoff Canyon
Thinking Product
4 min readOct 9, 2015

--

It sounds like one of those free energy scams (“Power companies hate him!”), but this is a fairly simple software change that would consistently and in some cases dramatically increase battery life.

The Problem

Here is a screen capture of the battery menu of my MacBook Pro on a bad day:

Apple says I should be able to get up to 10 hours on a full charge, and I often come close to that, but the above image shows it’s also possible to come up dramatically short — by a factor of 5 in this case.

The menu says that two apps are “Using Significant Energy”: Chrome and Safari. This comes as no surprise to anyone who keeps many tabs open; the more sites you have loaded, the faster you burn your battery. Some sites are particularly bad (looking at you, Salon.com).

Web browsers are the largest culprits here, but many other apps take a few percent of CPU to just sit there and wait for input. In general, if your fan is blowing, you’re likely wasting battery life.

You can see more detail about what’s going wrong in this Activity Monitor screen capture:

Note that total CPU usage isn’t even maxed out — open a few more tabs and battery life would drop below two hours.

The Solution

Here is a screen capture of my battery menu a few minutes later:

I assure you it was a coincidence that I had 10 hours 53 minutes of battery left at 10:53 PM. In any case, almost eleven hours of battery life, and I didn’t quit any applications or even close any windows. I just ruthlessly employed the command line — this command in particular:

kill -stop pid

…where pid is the value listed in the Activity Monitor app. The kill command with the -stop flag stops a process dead in its tracks. It doesn’t delete the process; it just pauses it, and prevents it from receiving any CPU time at all. In my case, all the windows with web pages were still on screen, they just weren’t responsive to clicks, or typing, or even scrolling. Mousing over them gave the spinning beach ball. Here is the Activity Monitor with many applications paused:

Note the item at the bottom that says “Safari Web Content” isn’t responding — that’s because I paused it.

A paused process can be resumed by using:

kill -cont pid

This is completely harmless. The app doesn’t even know it’s been paused, and picks up right where it left off. Obviously this is far too cumbersome to do manually, and no one would do it in practice. That’s where Apple comes in.

Apple To The Rescue

At the OS level, it would be easy to dynamically pause and un-pause applications and windows as they are switched to the background. The rest of the task is more complex of course. There would need to be a way for to un-pause background windows long enough to respond to some events — scrolling, at least, can be done while in the background. Then there are:

Apps That Need Background Processing

When iTunes is playing music, it needs to keep running in the background. Apps like Skype and GoToMeeting generally need to work in the background, and the same is true for some web pages, like Netflix. Downloads and other ongoing processes need to not be paused as well.

At the system level, Apple could provide hooks for applications to request to run in the background the same way they request user location or access to notifications. Sensible preference settings would be useful as well.

At the direct level, this might require a pause/unpause button for individual windows. As a first draft, I’d add a fourth button next to the Close, Minimize, and Maximize buttons in the top left of each window. An alternative, or additional, option would be an Allow Pausing This Window on the Window menu. Some user education would be required.

Conclusion

There are a myriad of user experience questions to decide here, but the underlying mechanism seems fairly simple. The benefit to many users would be an extra 50% or more of battery life. Apple, make this happen!

Postscript: Apps That Need To Be Paused In The Foreground

Web browsers have a nasty habit of over-processing: video ads play while you’re trying to read, elements reformat themselves to show new ads, and more. A setting to automatically pause browser windows once the initial render is done could come in very handy.

--

--