Firefox memory usage with multiple content processes

This is a continuation of my Are They Slim Yet series, for background see my previous installment.

With Firefox’s next release, 54, we plan to enable multiple content processes — internally referred to as the e10s-multi project — by default. That means if you have e10s enabled we’ll use up to four processes to manage web content instead of just one.

My previous measurements found that four content processes are a sweet spot for both memory usage and performance. As a follow up we wanted to run the tests again to confirm my conclusions and make sure that we’re testing on what we plan to release. Additionally I was able to work around our issues testing Microsoft Edge and have included both 32-bit and 64-bit versions of Firefox on Windows; 32-bit is currently our default, 64-bit is a few releases out.

The methodology for the test is the same as previous runs, I used the atsy project to load 30 pages and measure memory usage of the various processes that each browser spawns during that time.

Without further ado, the results:

Graph of browser memory usage, Chrome uses a lot.

So we continue to see Chrome leading the pack in memory usage across the board: 2.4X the memory as Firefox 32-bit and 1.7X 64-bit on Windows. IE 11 does well, in fact it was the only one to beat Firefox. It’s successor Edge, the default browser on Windows 10, appears to be striving for Chrome level consumption. On macOS 10.12 we see Safari going the Chrome route as well.

Browsers included are the default versions of IE 11 and Edge 38 on Windows 10, Chrome Beta 59 on all platforms, Firefox Beta 54 on all platforms, and Safari Technology Preview 29 on macOS 10.12.4.

Note: For Safari I had to run the test manually, they seem to have made some changes that cause all the pages from my test to be loaded in the same content process.

6 thoughts on “Firefox memory usage with multiple content processes”

  1. Thanks for the update! I was eagerly waiting for this :).

    The results are encouraging, I look forward to having this by default on Firefox 54.

    1. A few guesses:
      #1 We’ve invested more effort in reducing memory usage on Windows. This is probably because without e10s OOMs are a big deal, Chrome never had to deal with that.
      #2 Conversely, I think Chrome has made more of an effort on Linux particularly given the existence of ChromeOS (and to an extent android). They’re using a zygote process — roughly what we called nuwa for FxOS — that probably gets some significant per-process savings.
      #3 Kind of the same deal on OSX, Chrome started with WebKit which, developed by Apple, probably has decent OS integration. We also only recently dropped support for 10.6 (I think 10.8 and 10.9 as well), it’s possible we could use better APIs.

      1. Pretty sure we use more memory for graphics on linux/mac. On Windows we accelerate with the GPU so it uses less system memory.

  2. Do you think this multiple content processes will finally fix the infamous quadruple GC jank problem on 32 Firefox on Windows?

Leave a Reply

Your email address will not be published. Required fields are marked *