How to Identify High-Performance GPU Apps on the MacBook Pro
Shortly after the 2016 MacBook Pro with Touch Bar began shipping, battery life became a hot topic. Although Apple boasts up to 10 hours of performance per charge, I wasn’t seeing anything near that on my machine. I’d get maybe 4 hours. For a while, Consumer Reports refused to recommend the MacBook Pro because of battery life, although their testing methodology was questionable (see “Why We Should Care about the Consumer Reports MacBook Pro Rating,” 12 January 2017).
The upside of the tempest was that Apple was able to fix some graphics and battery life issues in the macOS Sierra 10.12.2 and 10.12.3 updates. One of those problems centered around the way macOS switched between the built-in Intel graphics processor and the discrete AMD Radeon Pro graphics card available in the 15-inch models.
(Although I’m writing specifically about the 2016 MacBook Pro with Touch Bar, the following discussion applies equally to any MacBook Pro with a discrete graphics card.)
When you launch a graphically demanding app, such as Adobe Photoshop, macOS switches to the Radeon processor, which consumes more power. When you quit the power-hungry app, the machine is supposed to turn off the discrete card and switch back to the integrated graphics processor, which offers less graphical power but doesn’t chew as much battery life.
Before 10.12.3, macOS wouldn’t accurately sense that the changeover had happened and would continue to drive the display using the discrete GPU. Since applying that update, my battery life has dramatically improved.
Even still, though, there are times when it seems as if my battery level is slipping away faster than I would expect given the work I’m doing. If you’re experiencing something similar, here’s how you can determine which apps are using which graphics processor and potentially track down the culprit. You have a couple of options:
First, click the Battery menu bar item, which will tell you which applications are “Using Significant Energy.”
That’s a fuzzy indicator, however. You can be running an application that’s using significant energy and still be using the integrated graphics processor. So, a quick trip into Activity Monitor is more helpful.
Launch Activity Monitor (located in the Utilities folder in the Applications folder; you can get there quickly in the Finder by choosing Go > Utilities) and click the Energy tab.
At the bottom of the window, see which graphics card is currently in use: Integrated (the Intel GPU) or “High Perf” (the high-performance Radeon GPU). If it’s the latter, you may be burning energy faster than you want.
To determine which application is causing the discrete GPU to run, click the Requires High Perf GPU column to sort the list of running processes based on that attribute. You may have to click the heading twice to sort it correctly; the caret to the right of the column title should be facing down to indicate that you’re sorting in descending order. At the top of the list, the apps that say Yes are your culprits.
Quit those apps. Even if you’re not actively using them, their presence can keep the discrete GPU active. The Graphics Card indicator at the bottom of the screen should switch back to Integrated.
You’ll notice that Activity Monitor also includes a Time Remaining estimate. When Apple released 10.12.2, it took the unusual step of removing this information from the Battery menu bar item (see “macOS 10.12.2 Sierra Focuses on New MacBook Pros,” 13 December 2016). Happily, you can still get that information in Activity Monitor. The estimate is still just an estimate, though, and shouldn’t be taken as gospel because macOS adjusts its energy
management features frequently. Nevertheless, the Time Remaining estimate can be a helpful guideline if you’re getting close to the wire.
Of course, if you have to use even a single app that requires the discrete GPU, your battery life will suffer, and there’s nothing you can do about it. Similarly, even if no apps are using the discrete GPU or reporting as using significant energy, the battery may drain faster than you expect due to other factors. Especially on the MacBook Pro with Touch Bar, I’ve found that turning off keyboard illumination (expand the Control Strip on the Touch Bar to reveal the keyboard brightness buttons) and reducing screen brightness can make a big difference.
This is brilliant and incredibly useful. I'm using a 2014 MacBook Pro but I've always wanted to see which of my application uses the discreet GPU. It looks like my only application that uses it is Lightroom.
Safari has memory issues but they're not related to the GPU.
Why would pgAdmin need the graphics card? It's the only app that was using it. pgAdmin can view Postgres databases. That doesn't seem too demanding. Is there any downside when the MBP is not running off the battery?
I just downloaded the latest version (4.13) and also found it requires the "high perf. GPU." My guess it's because its GUI is made using the Qt framework and there's something about the framework that makes the Mac think it should use the discrete video card; every application made with Qt likely will do the same. I would report it to Postgres in case there's some setting they can use in the Mac build process to make the application *not* trigger use of the discrete video card.
When you're not running off battery, the consequences of using the discrete video card are much less significant; you're using more electricity than necessary and may be adding wear to the cooling fans.
I use a 15" MacBook Pro as the navigational system on a yacht and power consumption is critical, especially when there is little sun or wind for power generation.
For years I have used gfxCardStatus (http://gfx.io). This useful app places an extra item in the menu bar which indicates by displaying the letter i or n whether the integrated or Nvidia discrete processor is active. Pull down on the icon and it shows a list of apps requiring the external card processor.
You can also switch between using Integrated only, discrete or dynamic switching. You cannot switch to 'Integrated only' if an app is already using the discrete processor. Some apps and an external display force discrete mode anyway.
I have gfxCardStatus set to display a notification whenever the mode is switched. This is a useful warning when you happen to launch an app that turns on the discrete processor and comforting confirmation when you quite a culprit.
I have successfully got app developers to remove unnecessary use of the discrete card and to fix an app that left it on when quitting. But if the app is no longer being maintained you may be out of luck - Bento for example.
I wanted to mention gfxCardStatus, but it's no longer actively maintained, and doesn't work reliably under Sierra (and maybe a version or two back). I used it for years, and wrote about it for TidBITS in 2011:
I've used this utility for years and continue to be happy with it. As it isn't maintained, it's less helpful in shifting sources of video drivers, but it continues to flawlessly show when the system is using discrete graphics and which apps are forcing its use. As long as gfxCardStatus still reports what's going on with the video circuitry, I'll strongly recommend it for anyone who is interested in stretching their battery capacity.
It's probably rare that you would be concerned about power consumption when you connect an external monitor, but my 2012 MacBook Pro Retina switches to the high performance graphics card when I connect an external monitor, even if none of my open applications need it.
Yes, I think all MacBook Pros with discrete cards switch to the GPU to power an external monitor.
I don't understand why it automatically uses the discrete card when an external monitor is attached, Macs without such cards are able to use the same monitors. It also happens regardless of whether the external monitor is extending the desktop or mirroring the built-in display.
At work, we always advise faculty to use the AC adapter when presenting from a laptop but it would be nice if they didn't have to.
I don't have the ability to check at the moment but I wonder if screen mirroring over AirPlay or using 3rd party mirroring software triggers use of the discrete card. It would be a little ironic if they don't, given that mirroring by software almost certainly is more intensive than mirroring on a physically connected display.
I started looking at this data when I got my new MBP 15. One oddity I have noticed is that Apple Photos does not seem to use the AMD GPU. I have two Photos extensions (RAWPower and DxO) that do trigger the GPU when they are used, but when I am finished with them, the GPU is turned off.
I would bet Apple tuned Photos especially so it doesn't need the GPU.
More a question than a comment. MBP 2016 with 2.9 GHz Intel Core i7. running with 598 GB free. Docked most of the time using a Benq 32 inch 4K monitor; currently running at 1080P. Latest s/w not beta.
I seem to have a lot of spinning beach balls. I cut they system down to only a few add ons such as SwithcResX. I still frequently get the spinning beach ball with Safari and iTunes. I even get the ball with the MBP native resolution with no external monitor attached.
Anyone seen this happening?
I have seen a lot of spinning beach balls of late - maybe since Sierra 10.12.3? MacBook Pro 15" with Thunderbolt Display and lid closed. I only rarely use iTunes and have the feeling it is linked to use of Safari.
sadly it seems to have started from almost day one. I am glad I did a clean install when I got this computer rather than a transfer.
I thought I would give it a few versions to see if MACOS versions would help. NADA.
Adam, I guess I should have bought one of those yesterday rather than upgrading another book from Take Control.
This sounds like the sort of thing you'd need to track down carefully. Joe Kissell's Speeding Up Your Mac: A Joe On Tech Guide is where I'd look for that information.
Or maybe his Troubleshooting Your Mac: A Joe On Tech Guide