Firefox & Electrolysis - Oxygen for all?


Updated: November 11, 2016

You probably have read a lot of articles talking about the introduction of proper, full-blooded multi-threaded, sandboxed stack into Firefox, commencing with late 4X versions, designed to improve the security and performance of this supposedly ailing browser. Known as Electrolysis, e10 and whatnot, it's meant to breathe fresh life into Firefox. Right.

Now, the full support will not be enabled across the platform for some time now, and it will also depend on extension support, which has always been the core part of the Firefox ecosystem. Before the new concepts hits your machine, I decided to give it an early preview and see what gives. A sampling of what Firefox will be one day.

Teaser

Note: Image taken from Wikimedia, licensed under CC BY-SA 3.0.

Warning, do not try this at home

There are several tweaks you do need to implement before Firefox runs multi-threaded. In some cases, your browser may already be the Chosen One, based on the Mozilla policy of gradually rolling the change out, but it's quite likely that it is not, most probably because your extensions aren't ready yet.

And so before you proceed, my recommendation is - if you want to test this, please use a test box and/or a test profile, preferably both. Make sure you have a backup of your profile, and that you are comfortable trying to fix Firefox should it go bang. Now, provided you have the right version of Firefox running, open a new tab and type about:support. This will open a page that shows what your browser is currently capable of and what it's doing. Nerdy stuff. If you're not at ease, walk away. Now, your browser will most likely not have the Multiprocess Windows feature enabled. This particular entry will probably read something like 0/1 (Disabled by add-ons).

Electrolysis disabled by addons

The manual process of forcing Electrolysis on requires a minimum of one change, and then possibly two. You will need to open the secret about:config page and add a new boolean preference named browser.tabs.remote.force-enable, and then set it to true. Restart the browser.

Create new boolean value

Is it running?

Well, the browser will probably tell you yes, but how can you be sure? For example, when I checked the Firefox status after I restarted it, it was still showing a single process with a single plugin-container child. There were many threads for each, but this is not a new thing, if you've ever done some background exploration on how Firefox behaves.

MT enabled

Running, but multi-threading not apparent

Remember I mentioned a second change? Well, this is what we need now. Again, this is not a recommended change, as it will take you even further away from the supported baseline, and you will be testing an even less-fully implemented feature. But it lets you increase the number of child processes that Firefox can spawn, with each one adding more complexity and a higher memory usage, of course.

The second change is governed by the dom.ipc.processCount preference. You can change the number to anything you want from the default value of 1. My suggestion is to work in the powers of 2, not going above the total number of your physical CPU cores, or twice that if you have hyperthreading enabled. At this stage, that is.

DOM count

Once this change is made - and you restart the browser, you will definitely see a bunch of extra processes. Please note that I tested on Windows 10. In the future, I will extend my tests to other Windows versions as well as various Linux distros, and also include the 64-bit version of Firefox. If you have any objections, may I refer you to Yes, Prime Minister, and the popular saying by Sir Humphrey: Rome wasn't built in a day.

Process Explorer, multiple processes

Task manager, multiple processes

Improvements?

Does this work. Technically yes. The memory usage was more or less the same, but this will also depend heavily on your workload. Most people will not see any big differences, and about 10-20% memory creep is within the error of any heavy Javascript-rich page. CPU wise, the browser did nothing more, nothing less. It was stable, but this is a test profile with only two extensions - Adblock and CTR, so I need to spend a lot more time playing. Performance was very similar. All in all, there wasn't anything to blow my mind. But that's the point. If your browser is slow, then you are doing something wrong. And the beauty of any good solution or technology is that it is transparent. For most people, Firefox may be a little briskier, a little faster one day. Only the geeks will care. It's not the speed that made people abandon it in favor of Chrome. But that's a different topic.

Conclusion

In these early days of testing and tweaking and gradual and yet incomplete deployment, Firefox with Electrolysis behaves fairly well. On a test box, which is not something that you should ever consider for your production. But overall, apart from the somewhat convoluted setup, it delivered desirable, predictable results.

However, there was no revolution. Memory and processor utilization were roughly the same as before, and so was the performance, neatly accompanied by a blessedly stable and crash-free experience during my test session. The benefits of the security isolation and going multi will only become apparent in the future, once additional improvements and optimization are added, and once people really start using the feature in earnest. But it is definitely the right step in the right direction. Firefox definitely needs a bit of fresh vitamins, and this just might be what users crave. Anyhow, this be the first test, but it sure ain't the last. See you around, and please heed my findings with a big pinch of salt.

Cheers.

RSS Feed icon

del.icio.us del.icio.us stumbleupon stumble digg digg reddit reddit slashdot slashdot



Advertise!

Would you like to advertise your product/site on Dedoimedo?

Read more

Donate to Dedoimedo!

Do you want to
help me take early retirement? How about donating
some dinero to
Dedoimedo?

Read more

Donate