Better battery life Macbook Pro with gfxCardStatus
Update: Just installed Mac OS X 10.8.4 and now it works much better. Fantastical, Growler, Hardware Grower, Scrivener and Tweetbot now works without switching cards.
Later models of Macbook Pro computers comes with dual graphics card. This makes it possible to use a low performance card when not using graphics intense applications, and automatically switch to the faster, but less energy efficient card if needed. But how do you know which card is currently active? There is a great application available called gfxCardStatus that shows you when the computer switches, and even uses notifications.
If your on the move and on battery power, you can force the computer to use the Integrated less power draining graphics card. If you need full speed, just select the Discrete card. The third alternative is to have it in the normal Dynamic Switching Mode. But there’s a snag when using Switching Mode. A lot of applications forces the Macbook Pro into using the Descrete high performance battery draining card, for no apparent good reason. Let’s examine that.## Hardware
This problem looks like it’s specific to “older” Macbook Pro machines. Newer (Retina display) Macbook Pro’s don’t have this problem. So it looks like this is a problem with the OS, not the developer.
After getting a response from the developers of Fantastical, it seems like the culprit is calls to CALayers.
Using Core Animation is what will trigger the discrete GPU in this case. That’s kind of a requirement to achieve smooth effects in a Mac app these days.
Users commenting about this sees different results than mine because of newer hardware. My Macbook Pro is a model:MacBookPro6,2 and newer machines does not have the same problems. So is this a bug in 10.8.3? I’ll try to test it on a Retina Macbook Pro.
Battery draining applications on Macbook Pro
Here’s a couple of applications that doesn’t need graphics power, but still kicks in the more powerful but battery draining graphics card. I’ve only chosen applications that I often have running in the background. I also excluded obvious applications that really need the extra power from the discrete graphics card.
Why do an application switch to the power draining mode?
It’s been a couple of years since I did Cocoa Objective-C programming, but reading up on this problem, there are a couple of things that can trigger a switch.
- Application uses OpenGL
- Connecting a second display requires the Discrete card
- Using CALayers can trigger a switch
You start Dropbox and it instantly forces the NVIDIA GeForce GT 330M to kick in, all the time! To display an icon in the menu bar? I’m depending on Dropbox all the time, but now when I need to work on battery power I have to quit Dropbox. This should be easy for them to fix.
Update: Check out the response from Dropbox support.
If I start Byword by opening a document, the machine uses the lower power graphics card, but if you open the iCloud open dialog box, the Discrete cards kicks in and won’t switch back until you quit the application. So there’s at least a way around this, which is good because this is my favorite Mac blog writing app and use it a lot.
Like Dropbox, Fantastical has been a staple in my menu bar. But this is another application that forces a switch to the more power hungry card. And let’s face it, Fantastical shouldn’t have to use the faster card.
Another application that shouldn’t need to start the advanced graphics card.
If you want to save battery when on the road, Safari is a better alternative to Chrome, because it also forces the more powerful graphics card to kick in. Safari doesn’t.
Yet another program that forces the faster more power hungry card to start. But should it really be necessary? I rather have better battery life.
Update: Response from their support.
Scrivener has a similar problem as Byword. As soon as you open the file browser, the Discrete card kicks in and stays active until quit. Yet another great app that unfortunately is the type of app that’s active a lot on my machine.
This is my favorite diary app on both iOS and the Mac. It also kicks in the power hungry card immediately. But because the Mac version is behind feature-wise, I usually do my writing on the iPad anyway. But when they update the app with tags, weather and location data, maybe they could spend a while trying to fix this problem.
Immediately switches over to the Discrete card. This is unfortunate because this is yet another application that’s usually opened all the time. So when on battery power, I’ll use Safari instead.
This makes sense. It’s a graphics intense application. Apple Pages does not use the power hungry card. And if such an advanced app can manage with the slower card, so should Dropbox and Fantastical.
Switches over to the power hungry card. This application is a bit up in the air at the moment due to the shutdown of Google Reader. But they’ve updated the iPhone version for syncing to my new replacement service Fever, so if they implement that in the Mac client it will become a staple application again. But I will not have it running in the background when on battery.
Maybe not the most used application when on battery power, but it is good to know that it will decrease the battery life if left open.
Here’s a program I guess a lot of people have running when out and about. But when selecting user listings or anything else, it switches over to the battery draining card.
Responses from the developers
I’ll try to send a bug report to all the applications above and keep this section updated with responses (if there will be any).
Byword Response ###
Yes, coming next update, Byword will no longer use the dedicated graphics card.
You do provide a great insight regarding when Byword causes the switch. When chasing this problem we never quite understood what triggered the issue because on our machines it never did. Thanks for that.
1Password response ###
Thanks for taking the time to let us know about this.
I’ve tested this on my own computer, which is a 15" Retina MBP. It’s running 10.8.2 still (need to run some backups before updating to 10.8.3) and I was not able to recreate this. In fact, I had Skype, Fantastical, 1Password, Dropbox, Reeder, Tweetbot, and Transmit all running. Which is quite a full list based on your blog post.
Since I was mostly concerned with 1Password I did a variety of things to try to coax it into switching graphics modes. I tried both the website version (3.8.20) of the app and the Mac App Store version (3.9.6). Neither exhibited any of the graphics card switching you mentioned.
I had our CEO give it a try as well, he’s running 10.8.3, otherwise, same MBP as myself. He was not able to get it to trigger.
So, that makes me believe that at least to some extent, this may be based on graphics drivers. Some computers may have drivers that are triggering the discrete graphics incorrectly. It may also be that our test is slightly flawed here and that the Intel HD 4000 is capable of more than previous models and therefore graphics switching isn’t necessary on newer devices. I believe you mention that newer devices may not see this behavior, I assume it’s due to the integrated graphics card, but cannot confirm directly, merely a guess based on the limited knowledge I have.
Before I dig in more, could you confirm which version of 1Password you’re using?
Also, does just opening the app trigger the discrete card, or do you need to do anything in particular to get it to do it? If so, what steps did you take to trigger it?
Dropbox Response ###
Thank you for contacting us! This seems to be a bug introduced by the Mountain Lion 10.8.3 upgrade on 2010 Macbook pros and is not limited to Dropbox.
A lot of other applications on your Mac will now cause the discrete graphic card to be on as you correctly pointed out. For now the only solution is to revert back to the previous Dropbox build. Here’s the link:
We’re looking into a possible fix, but it’s a little unclear how complex it will be!
Thanks for bringing this to our attention and for the amazing bug-hunting work!