Fullscreen switching is slow with many tabs
Categories
(Core :: Graphics, defect, P3)
Tracking
()
Performance Impact | low |
Tracking | Status | |
---|---|---|
firefox68 | --- | unaffected |
firefox69 | --- | wontfix |
firefox70 | --- | wontfix |
firefox71 | --- | wontfix |
firefox72 | --- | wontfix |
firefox73 | --- | fix-optional |
People
(Reporter: slash, Unassigned)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: perf, perf:responsiveness, regression)
Attachments
(6 files)
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0
Steps to reproduce:
- Open 800 tabs (attached session data)
- Quit
- Restart
- Restore session
- Press F11
Actual results:
Firefox 69 is slower than firefox 68
Expected results:
Firefox 69 is as fast as firefox 68
Reporter | ||
Comment 1•5 years ago
|
||
Reporter | ||
Comment 2•5 years ago
|
||
Would you like to try Firefox Nightly 71? Full screen code is being rewritten (bug 1505916).
Reporter | ||
Comment 4•5 years ago
|
||
Nightly 71 is slow too.
Comment 5•5 years ago
|
||
It is likely too late to do anything about this for 70. But we'll see how Fission work helps for 72 and maybe even 71.
Reporter | ||
Comment 6•5 years ago
|
||
mozregression:
10:41.06 INFO: Narrowed inbound regression window from [6c6b0bbf, 8f15ea3b] (3 builds) to [6c6b0bbf, 5a18f5c9] (2 builds) (~1 steps left)
10:41.06 INFO: No more inbound revisions, bisection finished.
10:41.06 INFO: Last good revision: 6c6b0bbf5885493a0b85cedf1985d6eb3bdbfe6f
10:41.06 INFO: First bad revision: 5a18f5c929ab13bde25f7fff8ae72f87e8fa379c
10:41.06 INFO: Pushlog:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=6c6b0bbf5885493a0b85cedf1985d6eb3bdbfe6f&tochange=5a18f5c929ab13bde25f7fff8ae72f87e8fa379c
Updated•5 years ago
|
Updated•5 years ago
|
Comment 7•5 years ago
|
||
Do you see this on a clean profile? Have you toggled gfx.webrender.split-render-roots
to true
on the profile where you see this?
Updated•5 years ago
|
Updated•5 years ago
|
Reporter | ||
Comment 8•5 years ago
|
||
(In reply to :Gijs (he/him) from comment #7)
Do you see this on a clean profile?
I tested with a new profile.
Have you toggled
gfx.webrender.split-render-roots
totrue
on the profile where you see this?
It's set to false. Setting it to true doesn't change anything.
WebRender seems disabled. Please see the attached about:support.
Comment 9•5 years ago
|
||
I'm stumped, tbh. There's nothing in the about:support data that stands out to me (though it may be worth someone more in tune with the finesses of gfx to take a look - nical?), the change in bug 1549976 I don't think should have affected non-webrender, and I can't tell what's going on in the videos - they move a lot from left-to-right? I don't really understand why - does the same issue not happen if you're going from a maximized window to fullscreen?
One more stab in the dark: on the clean profile, if you toggle toolkit.legacyUserProfileCustomizations.stylesheets
to true in about:config, close Firefox, and create a chrome
folder in your profile with a userChrome.css
file containing:
html|*#fullscreen-and-pointerlock-wrapper {
display: none;
}
and reopen Firefox, does the problem go away? (You probably don't want to keep that long-term because it'll break pointerlock and fullscreen warnings.)
It's also possible gecko profiles for the before/after would help, but tbh from the video it's not clear to me that there's really a significant difference in how quickly anything happens? It looks maybe more stuttery in 69 (though even that's hard to see because of the horizontal back-and-forth), but not slower in a wall-clock-time sense, and it may be hard to make out the difference in a profile.
Reporter | ||
Comment 10•5 years ago
|
||
(In reply to :Gijs (he/him) from comment #9)
userChrome.css doesn't help.
Removing #fullscreen-and-pointerlock-wrapper from browser.xhtml makes fullscreen by F11 fast. But fullscreen by video element is still slow.
I'll attach new videos. They'll show the problem clearer.
Reporter | ||
Comment 11•5 years ago
|
||
Reporter | ||
Comment 12•5 years ago
|
||
Comment 13•5 years ago
|
||
Can you use the Firefox Profiler add-on to get profiles of the good/bad behaviour in the 3000 tabs case?
Reporter | ||
Comment 14•5 years ago
|
||
firefox 68:
https://perfht.ml/36Lf7VO
firefox 69:
https://perfht.ml/2oYwpNV
Comment 15•5 years ago
|
||
From the profiles, looks like stylo is where things are happening, which I don't know much about. Looks like a lock in Servo_CssUrlData_Release is contended, but I don't know with what (the stylo workers are not recorded in the profile).
Moving from WebRender to the Graphics component since the former does not affect the issue, but I doubt the answer will actually be Graphics.
Perhaps the change in the regression range or some other change that happened around the same time nudged some heuristics somewhere which led more items to be considered by the style system when thousands of (hidden) tabs are present?
Comment 16•5 years ago
|
||
P3, unassigned, so wontfix for 71 given where we are in the schedule.
Updated•5 years ago
|
Comment 17•5 years ago
|
||
The most suspicious thing I see in this profile is that we spend almost 700ms in Servo_CssUrlData_Release waiting on a lock during the two reflows. That said, the rest of the stacks don't make much sense, so it's not clear what's actually triggering the reflows, or even whether the parts of the stacks that seem to make sense are actually trustworthy. I'm not sure whether this is because of improper symbolication or just because of the way the code is optimized.
Comment 18•5 years ago
|
||
Marking fix-optional to remove this from weekly regression triage.
Updated•3 years ago
|
Updated•2 years ago
|
Updated•8 months ago
|
Updated•13 days ago
|
Description
•