Mozilla adds multiprocessing with Electrolysis in Firefox 54

Four Cylinders

© Lead Image © Karols Stefan Sobolewski, 123RF.com

© Lead Image © Karols Stefan Sobolewski, 123RF.com

Article from Issue 204/2017
Author(s):

Developers are praising Firefox 54 as the "best Firefox ever." The revamped web browser adds multiprocessing and promises a significant boost in speed.

In the mid-1990s, Netscape Navigator was the leading web browser, but when Microsoft decided to bundle Internet Explorer (IE) with the Windows operating system, the tide began to turn. After years of competition (and litigation), Redmond lost the antitrust case, but won the browser war. At its peak, IE had an 80 percent share of the browser market. But the Mozilla project, which was built from remnants of Netscape, bounced back with Firefox. The Firefox browser has had a long and glorious run, attracting up to 48 percent of the market at its peak, including many Windows users who opted for Firefox because they just liked it better than IE [1].

Firefox's fortunes have waned in recent years. Chrome has emerged as the leading third-party browser alternative, with Firefox market share falling somewhere in the range of 11 to 14 percent. Part of the change is the ordinary dynamics of the software development lifecycle. An application is designed for the time in which it is built, with state-of-the-art programming techniques and implicit assumptions about the state of available hardware. As the world changes, the software continues to receive updates, but a large-scale overhaul is never easy midstream, especially for an application with millions of users.

Chrome was built later and isn't showing the same signs of age. IE is definitely aging, but Microsoft solved the problem by replacing IE with a whole new browser – the Microsoft Edge browser, which debuted with Windows 10.

Chrome and Edge distribute the computing work when rendering a web page over multiple processes. On a modern system, this approach should result in increased performance, stability, and security. The Mozilla developers knew they needed this multiprocessing capability to stay relevant for the next generation. The result of this effort is the Electrolysis project [2], also called Multiprocess Firefox [3]. At least one of the developers involved with the Electrolysis project has called the newly released Firefox 54 [4] with Electrolysis support "the best Firefox ever" [5].

Multiprocess Firefox

With Firefox e10s (the abbreviation for Electrolysis) each tab and the interface need to run in a separate process (Figure 1). This promises faster load times, as well as greater security and stability. All tabs work independently: If a corrupted web page crashes, only the corresponding process and the associated tab will pend. All other web pages and the browser itself continue to operate unhindered.

Figure 1: Firefox 54 with Electrolysis transfers the interface and web content into their own processes. (CC BY-SA 3.0 [6], source: Dan Callahan, Belén Albeza)

With Firefox 54, Mozilla automatically activates Electrolysis for the user for the first time – but only for those not using add-ons. Previously, this was only possible with the developer's "nightly" version. As a user, you will not initially be aware of the change. To start, the new Firefox version looks and feels the same as the previous browser editions.

To see if Electrolysis is active, go to the Troubleshooting Information page (click the hamburger menu, then ? | Troubleshooting Information) and enter about:support in the address bar. If the field that follows Multiprocess Windows shows 1/1 (Enabled by default), Firefox uses several processes (Figure 2). The 1/1 stands for the number of Firefox windows currently open.

Figure 2: The output for Multiprocess Windows under about:support shows that Electrolysis is active.

Firefox logically separates the individual tabs from one another with Electrolysis plugins, so a number of popular extensions block the function. In the past, this included NoScript [7], for example. Recently, most add-on developers have responded and updated their applications accordingly. However, various browser add-ons in the Mozilla extensions shop still have not fixed this problem. If you use one of these add-ons, the corresponding field in about:config will only show 0/1 (disabled by add-ons).

Incompatibilities

In such cases, you need to disable the incompatible add-on. The easiest way to find the culprit is via the Add-on Compatibility Reporter [8], which adds an additional column in the extension overview under about:addons. Beside each entry is Compatible with multiprocess or Not compatible with multiprocess.

Ubuntu's automatically preinstalled Ubuntu Modifications (Figure 3) is a typical example of an incompatible add-on. To activate e10s in Ubuntu 17.04, you first need to disable this add-on or force-activate Multiprocess Firefox through configuration (see the "On Command" box).

On Command

Traditional add-ons are on the way out at Mozilla – Firefox developers are planning to switch completely to WebExtensions [9] with version 57. Using this browser API makes it possible to develop add-ons with relatively little overhead for all popular browsers (Firefox, Chrome, Edge). Classic extensions often can't cope with Multiprocess Firefox; therefore, browsers don't activate this function if they encounter an incompatible extension. You are then faced with the choice of continuing to use a beloved add-on or Multiprocess Firefox. As a way out, you can force e10s active in about:config. There, you can right-click and choose New | Boolean, name it browser.tabs.remote.force-enable, and select true as the value. A reboot then forcibly enables Multiprocess Firefox. In case of problems, you should do without the extension in question – or even e10s.

Figure 3: Ubuntu users need to disable the Ubuntu Modifications add-on by hand for Multiprocess Firefox to work.

However, Firefox 54 still does not necessarily use multiple processes. You need to change the about:config dom.ipc.processCount option in the configuration database. A 1 is usual, and any value greater than 1 stands for another Firefox process that the browser launches as required. Mozilla recommends a maximum value of 4 because the memory consumption increases with each process – too many processes hardly offers any more advantages (Figure 4). The System Monitor shows the individual processes (Figure 5). Alternatively,

pgrep -c -f firefox

provides the number of processes launched by Firefox (plus one for the interface).

Figure 4: The number of processes launched by Firefox can be adjusted in the settings.
Figure 5: The System Monitor shows Firefox 54 distributing the rendering of web content (Web Content) to multiple processes.

Always Responsive

However, the performance values between Firefox 53 and Firefox 54 only changed marginally in a test over several benchmarks (see Table 1). The difference is rather striking in practice: When I opened Firefox 53 without e10s (see the "Switched Off" box) and launched the JetStream [10] JavaScript benchmark in two browser windows, it was no longer possible to run Firefox on the test computer. Other web pages would no longer load, and the interface froze.

Switched Off

During the test, Multiprocess Firefox proved to be subjectively less stable than the conventional Firefox. Crashes often occurred when loading several web pages that used JavaScript extensively (e.g., the browser benchmarks). Thanks to e10s, crashes don't affect the whole browser, but they often cause so much interruption that you'll want to disable Electrolysis. To do so, open about:config and set the browser.tabs.remote.autostart option from true or false. Firefox only uses one process after a reboot.

Table 1

Performance Comparison

Benchmark

Firefox 53

Firefox 54

Chrome 59

Opera 45.0

JetStream 1.1

142.7

141.0

315.8

223.1

SunSpider 1.0.21

297.7

259.3

315.8

223.1

Peacekeeper [1]

4447.3

5764.7

4385.7

3853

Higher values are better.[1] Benchmark is no longer maintained.

However, with Firefox 54 and Electrolysis activated, it was possible to run the browser without impairments, even with two or more benchmarks running. In this case, the results of the performance measurements might have been slightly poorer than those of Firefox without e10s, but in practice, I can deal with this in favor of an interface that is easy to use. In everyday testing, the new fluidity particularly stands out with power-hungry websites such as Firefox or Google+.

Firefox keeps limits memory consumption. Measurements by Mozilla developers showed that Firefox in Linux hogs less memory than Chrome [11]. The same applies to Firefox in Mac OS X and Windows. The current Firefox is therefore only topped by IE. However, Microsoft's current Edge browser uses significantly more memory. Firefox is therefore a possible alternative to Chrome, particularly on systems with little memory.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News