Plugin-container in Firefox 4; High CPU and Graphics Switching Problems and Workaround
I recently upgraded to Firefox 4, and unfortunately, I've had many problems running Firefox under OSX on my Macbook Pro.
The first problem I came across was that Firefox is now hardware accelerated. This should be a good thing, but due to the way Apple has implemented graphics switching, Firefox caused the discreet graphics card to be used (as seen with GFXcardstatus)
To prevent this, I went into preferences, and disabled "Use hardware acceleration where available" under Advanced>General.
But my problems didn't stop there. Now, it seems Firefox has decided to run plugins such as flash under a separate process called plugin-container in order to protect the browser from plugin crashes. This is a good idea (I believe Chrome and Safari do the same), but even with hardware acceleration disabled in Firefox and Flash, plugin-container still triggered the discreet graphics.
This would actually be acceptable if plugin-container was terminated after I navigated away from the page with the flash content, but this is not what happens. Instead, plugin-container keeps using the high-powered GPU until Firefox is closed.
At this point, I thought that I'd try to force the computer to only use integrated graphics (using gfxcardstatus), but then I discovered another problem:
The plugin-container process was using large amounts of CPU time when flash content was visible in the Firefox window. Typically, viewing just a static flash ad would cause plugin-container to use about 60% (in addition to firefox using about 20%, that means 80% total). Obviously, this was a battery life problem.
After all of this I think I found a temporary workaround, but there are clearly problems here that need to be resolved by the Firefox developers. There are many non tech-savvy users who are no doubt experiencing poor battery life from these problems.
My Temporary Solution
1. Disable hardware acceleration in Firefox in Advanced > General
2. Disable hardware acceleration in Flash by right clicking a flash element, clicking settings, and then unchecking "enable hardware acceleration"
2. In about:config, search for dom.ipc and set all boolean values that appear to false. This will disable Firefox's plugin-container process for all plugins.
(At this point, if you restart Firefox, Flash will not work at all)
3. Set Firefox to 32-bit mode by getting info on Firefox.app and then checking the "Open in 32-bit mode checkbox"
4. Restart Firefox. Flash should be working with reasonable CPU usage (I had something like 20% with static flash ads as opposed to 80% before), plugin-container will be no more, and your Macbook will no longer switch to discreet graphics for Firefox or Flash.
UPDATE: It seems that firefox still sometimes causes a switch to discreet graphics for certain flash elements (video players mostly). Also, I've still seen some cases where flash elements are using large amounts of the CPU, even when they are not in the current tab.
I hope this was helpful to somebody, and if anyone has a suggestion for how to make this workaround obsolete or better, please respond.
Modified
All Replies (7)
Damn i have the same issue too and i also noticed when i close firefox if there is or not /plugin-container.exe on proccess list when i close firefox it spawns 5-6 different threads of plugin-container and then closes. (some times it crashes too) using Windows XP SP3. I added screenshots the first one is before i run a video or close firefox. The second one is what happens when i close firefox and third picture memory use when playing video.
Modified
What I'm wondering is if it is possible to create two Firefox applications in Mac OS -- one as the original (which uses hardware acceleration by default) and the other "lite" which uses your recommendations above. The second one would be used when you're relying solely on battery life.
If so, would it be able to keep all the same settings (plugins, bookmarks) the same between both versions somehow?
Or rather than go through all this complication, would it be better to just use the gfxCardStatus app. to switch to integrated graphics when you'll be using battery power?
Thanks for your detailed and helpful post!
-- Ilhan
I assume that it is possible to create two versions of Firefox. But at this point, I just use Safari or Chrome if I want to use the discreet graphics for some reason. As far as syncing settings between the two versions, I don't know how that would work.
I wish switching to integrated with gfxCardStatus was a solution, but, as I mentioned, plugin-container still eats processor cycles even with the laptop running on integrated graphics.
I have had a few issues with my workaround. For one, some flash elements still cause a switch to the discreet graphics. Luckily, this only happens when the elements are visible on the page, scrolling away switches the graphics back to integrated. Scrolling past flash elements also causes brief stuttering which is more severe if the graphics switch is triggered.
Additionally, Firefox still uses a lot of my CPU at times. I have no idea why Firefox is 4-6% as I'm typing this with no other tabs open. 5% may not seem like a lot, but that amount of CPU usage still has a large effect on battery life.
As soon as one of the major browsers figures out how to to avoid triggering the discreet graphics on macs as much as possible while also being efficient, I will completely endorse that browser. Firefox, you're running out of time.
This problem should be fixed, i have to macbook pro and in both a 2010 model and 2011 of the macbook pro 13" have the same problem one with the hd3000 and the other with the nvidia 320m, since I upgraded to firefox 4 i can't watch a flash video because the fan of my computer goes all the way it is very annoying.
I like a lot firefox 4 but this makes me use more google chrome than ff4.
- ( please fix this ASAP on Windows I don't have a problem like this.
Ive downgraded from FF4 to 3.6 at this point. The CPU usage is out of control on OS X.
After upgrading to FF4, i noticed similar problems. plugin-container.exe uses a lot of memory, especially running flash apps. my cpu showing 30%-80% utilization from this process, which is not good for my laptop.
i tried disabling hardware acceleration from right click and tool bar, but to no avail i see no improvements.
currently im switching to chrome as ff4 is too buggy than before. if its fixed, im switching back fo ff. as a consumer, i just wanna surf and play but this problem forces me to switch. :(
For me installing the 64-bit version of the flash player solved the issue, makes more sense than running FF in 32 bit mode
Modified