Closed Bug 1183154 Opened 9 years ago Closed 8 years ago

Slow page loading with Electrolysis on. (IPDL::PVsync::RecvNotify > nsRefreshDriver::Tick)?

Categories

(Firefox :: Untriaged, defect)

41 Branch
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
e10s + ---

People

(Reporter: dsmith, Unassigned)

References

Details

User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
Build ID: 20150713004006

Steps to reproduce:

Page load comparison between Electrolysis on and off, using the dev tools performance analysis pane.

Test web site: http://codeblog.jonskeet.uk/




Actual results:

Screenshot with Electrolysis ON: http://imgur.com/7K3BtV2
Screenshot with Electrolysis OFF: http://imgur.com/beV5wAX

You can see the responsiveness up at the top, with the frames per second chart.  When it rises back from near-nothing back up to ~60 fps, then the page is working and usable again.  Duration of the 0 fps gap is about 1.5 seconds with electrolysis off, and about 4 seconds with electrolysis on.

The notable transition is the second paint event.  With electrolysis off, it almost immediately follows the first paint event, and fps goes back up shortly after.  With electrolysis on, there's that massive gap between the paint events, though, again, the page is available shortly after the second paint event.

Checking out the call tree and flame chart views, the period in question seems to be in calls to: IPDL::PVsync::RecvNotify > nsRefreshDriver::Tick


I've done tests with an empty profile as well, and had similar results, though there tends to be more, smaller gaps rather than one large gap.


Expected results:

Expected that there should not be excessive delays during page load.
Summary: Slow page loading with Electrolysis on → Slow page loading with Electrolysis on. (IPDL::PVsync::RecvNotify > nsRefreshDriver::Tick)?
Mike, can you help triage this?
tracking-e10s: --- → ?
Flags: needinfo?(mconley)
Blocks: e10s-perf
Flags: needinfo?(mconley)
Yep, will get triaged tomorrow.
David:

Can you please list for me your enabled add-ons?
Flags: needinfo?(dsmith)
Extensions (version)
--------------------
Name: 4or6 (1.2.1.1-signed)
Name: ChatZilla (0.9.91.1.1-signed)
Name: Classic Theme Restorer (1.3.5)
Name: Download YouTube Videos as MP4 (1.8.3.1-signed)
Name: FindBar Tweak (2b2)
Name: FireFTP (2.0.24.1-signed)
Name: keyconfig (20110522)
Name: NoScript (2.6.9.30)
Name: PasswordMaker (1.7.8.1-signed)
Name: Stylish (2.0.2.1-signed)
Name: Super Drag (0.15.1-signed)
Name: SuperStop (0.1.1-signed)
Name: uBlock Origin (0.9.9.3)
Name: Undo Closed Tabs Button (3.9.5)
Flags: needinfo?(dsmith)
Extra note: Chatzilla and FireFTP are not running, and there are no Stylish rules for this page.
David, Ok, since you have several add-ons installed known to affect performance in e10s, can you try in a clean profile and/or with all of your add-ons disabled.  Thanks for the report and your help.
Flags: needinfo?(dsmith)
My normal profile, in safe mode.

Electrolysis Off, Addons disabled: http://imgur.com/TBDS54J
Electrolysis On, Addons disabled: http://imgur.com/CJifNW1

Fresh, temporary profile, with no modifications other than turning Electrolysis on and off.

Electrolysis Off, New profile: http://imgur.com/cCO0NYm
Electrolysis On, New profile: http://imgur.com/nQfFjTS


With Electrolysis on, the same gap always appears.  However, with Electrolysis off, there are now multiple similar gaps, and significantly longer load times, rather than no gaps and a shorter load time.

However... while my normal profile (with or without safe mode) has the Flame Chart reporting the gaps as being occupied by (IPDL::PVsync::RecvNotify > nsRefreshDriver::Tick), the gaps seen in the temp profile are occupied by Graphics.


Approximate Load Times:
E10S on, Normal profile: 4 seconds
E10S on, Safe profile: 4.5 seconds
E10S on, New profile: 3.5 seconds
E10S off, Normal profile: 1.5 seconds
E10S off, Safe profile: 6 seconds
E10S off, New profile: 8 seconds

(All page loads done with Ctrl-F5 to bypass the cache.)

It appears that one of my addons (apparently NoScript, from another quick test) is vastly improving load speeds for non-Electrolysis (to the point of making it ~3x times faster than Electrolysis), but is doing nothing when Electrolysis is active.
Flags: needinfo?(dsmith)
(In reply to David Smith from comment #7)
> It appears that one of my addons (apparently NoScript, from another quick
> test) is vastly improving load speeds for non-Electrolysis (to the point of
> making it ~3x times faster than Electrolysis), but is doing nothing when
> Electrolysis is active.

That sounds very plausible. I don't believe NoScript is fully e10s compatible yet - needinfo'ing the NoScript author to confirm.
Flags: needinfo?(g.maone)
(In reply to Mike Conley (:mconley) - Needinfo me! from comment #8)
> (In reply to David Smith from comment #7)
> > It appears that one of my addons (apparently NoScript, from another quick
> > test) is vastly improving load speeds for non-Electrolysis (to the point of
> > making it ~3x times faster than Electrolysis), but is doing nothing when
> > Electrolysis is active.
> 
> That sounds very plausible. I don't believe NoScript is fully e10s
> compatible yet - needinfo'ing the NoScript author to confirm.

In facts, current AMO releases of NoScript are not fully E10s-aware and still make an excessive use of shims and CPOWs, to the point that IPC overhead due to blocking stuff in the content process according to rules in the main process probably negates the performance gain of preventing active content from running.

I'm working hard on a full porting, module by module (started with ABE, which could eventually be packaged as a stand-alone add-on), but it will likely take months to hit the stable channel.

However I hope to release soon previews in the beta channel, throwing away compatibility with Firefox 39 and below.
Flags: needinfo?(g.maone)
Hey Mike, 
We are cleaning up untriaged items. Please assist us by selecting an appropriate component. Thanks
Flags: needinfo?(mconley)
I suspect this will be fixed when NoScript becomes fully e10s compatible, which... might already be the case? mao, I've kinda lost track - is NoScript fully e10s compatible?

If so, I'll needinfo the reporter to try to reproduce - I suspect the bug will be gone with an up-to-date version of NoScript.
Flags: needinfo?(mconley) → needinfo?(g.maone)
Many things are fixed, some are not yet. I'm not sure about this specific bug, but most of the slowdown/hang types should be gone by *next* stable release.
Flags: needinfo?(g.maone)
Alright, well, let's see what the reporter thinks. Reporter, are you still seeing this?
Flags: needinfo?(dsmith)
In varying combinations of NoScript/Electrolysis activation, I'm not seeing the massive loading gap that I was seeing when the bug was reported, compared to when either is off.  Having NoScript active while Electrolysis is on does not seem to experience that significant inactivity period.

This is using the 1/21 build on the Aurora channel.
Flags: needinfo?(dsmith)
This this sounds like a WFM then. Thanks!
Status: UNCONFIRMED → RESOLVED
Closed: 8 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.