1. 40

One interesting aspect of how Mozilla is implementing multiprocess is they are not dedicating one process per tab.

Right now teams are working to define a fixed number of processes for future rollouts. The question is whether new versions will coalesce pages randomly into a fixed number of processes or coalesce pages by domain.

“We can learn from the competition,” said Dotzler. “The way [Chrome] implemented multi-process is RAM-intensive, it can get out of hand. We are learning from them and building an architecture that doesn’t eat all your RAM.”

  1.  

  2. 7

    Quite the improvement considering

    For now, multi-process is limited to a single content process and a single browser process.

    1. 4

      A little extra concurrency can sometimes win you more than you’d expect, but diminishing returns kick in too.

      A bit amused if that’s really the extent of their re-architecture. Squeezing the marketing out of it for all it’s worth.

      Here’s hoping Servo scales up.

      1. 9

        A bit amused if that’s really the extent of their re-architecture.

        I think this sort of re-architecture has a lot more extent than you think. :) Remember that Firefox was around before Chrome and Safari and was not originally designed with multiprocess in mind…

        1. 1

          I know.

      2. 1

        I bet that refactoring out into two processes has forced a clean up of a bunch of old crappy code that never worked well in a threaded environment to begin with.

      3. 5

        I’m actually somewhat curious how they measured “responsiveness” and what the percentages mean. I’m currently using a singly-threaded Firefox and the UI does seize up occasionally. Maybe they’re measuring the length of time that the UI is too busy to respond to input?

        1. 12

          Yes, you got it.

          The main thread event loop is instrumented with dummy events. If it takes too long to process the events in between (say 50ms), this is logged. We can then compare how many events exceeded the threshold and by how much for any given user interaction. There’s more documentation in the source.

        2. 2

          I’ve force enabled it on 48.0.1 and either I fell victim to the placebo effect or it’s actually working very nice. Parallel loads complete swiftly, browser does not freeze.

          1. 1

            I force enabled it too but my experience was the opposite - it seems noticeably slower. I’m not sure if it’s because I have a number of add-ons installed? This is on OS X 10.11, BTW.

            1. 3

              Yeah, a single shimmed addon can completely slow down the whole thing, to such a degree that it’s even worse than non-e10s.

              1. 2

                See about:support then you can see if it actually works. I have uBlock Origin and HTTPS Everywhere and that seems to disable it:

                Multiprocess Windows 0/1 (Disabled by add-ons)

                1. 2

                  Yep, I use those too, which is why I had to force enable it. It is enabled (using the instructions here - basically enable browser.tabs.remote.force-enable), but perhaps the add-ons are causing it to run sub-optimally? Will fiddle a little later and report back.

                  From the aforementioned link:

                  Profiles that have lots of older addons will likely experience slowness or other issues

                  :(

                  1. 1

                    I’m running 48.0.2 and tried the instruction in the URL to no avail. about:support still shows Multiprocess Windows 0/1 (Disabled by add-ons) even after creating the config browser.tabs.remote.force-enable and setting it to true (with a obligatory browser restart).

                    I was one of the early adopters of e10s in Firefox Aurora channel, opting to enable it as soon as it was available, so it’s a bit ironic that I can’t enable it in the stable release!

                2. 1

                  This is on Fedora 24 without Flash and mostly just uBlock Origin.

                  1. 1

                    Hm… https://github.com/gorhill/uBlock/issues/1862 so it must be HTTPS everywhere :-)