Closed Bug 1508213 Opened 6 years ago Closed 6 years ago

4.39 - 5.64% sessionrestore / ts_paint / ts_paint_webext (windows10-64-qr) regression on push c7a9ceb9becbccaf75f65eec47a98f0a72fafb02 (Fri Nov 16 2018)

Categories

(Toolkit :: UI Widgets, defect)

x86_64
Windows 10
defect
Not set
normal

Tracking

()

VERIFIED FIXED
Tracking Status
firefox-esr60 --- unaffected
firefox63 --- unaffected
firefox64 --- unaffected
firefox65 --- fixed

People

(Reporter: igoldan, Unassigned)

References

Details

(Keywords: perf, regression, talos-regression)

Talos has detected a Firefox performance regression from push: https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?changeset=c7a9ceb9becbccaf75f65eec47a98f0a72fafb02 As author of one of the patches included in that push, we need your help to address this regression. Regressions: 6% ts_paint windows10-64-qr opt e10s stylo 341.58 -> 360.83 6% sessionrestore windows10-64-qr opt e10s stylo 340.00 -> 358.83 4% ts_paint_webext windows10-64-qr opt e10s stylo 355.08 -> 370.67 You can find links to graphs and comparison views for each of the above tests at: https://treeherder.mozilla.org/perf.html#/alerts?id=17647 On the page above you can see an alert for each affected platform as well as a link to a graph showing the history of scores for this test. There is also a link to a treeherder page showing the Talos jobs in a pushlog format. To learn more about the regressing test(s), please see: https://wiki.mozilla.org/Performance_sheriffing/Talos/Tests For information on reproducing and debugging the regression, either on try or locally, see: https://wiki.mozilla.org/Performance_sheriffing/Talos/Running *** Please let us know your plans within 3 business days, or the offending patch(es) will be backed out! *** Our wiki page outlines the common responses and expectations: https://wiki.mozilla.org/Performance_sheriffing/Talos/RegressionBugsHandling
Component: General → XUL Widgets
Product: Testing → Toolkit
Flags: needinfo?(vporof)
I'll soon post the Gecko profiles.
Interesting that this is QuantumRender only. I've been requested to skip those on try pushes to save resources which is why this was missed before landing. I seem to remember that QR has some slow paths related to trees, and I do see a very slow getter on `columns` (24ms / https://perfht.ml/2A2OtrO), which returns treeBoxObject.columns: https://searchfox.org/mozilla-central/rev/b03a62c3c82316e733a3b09622c1cb7e59f64cc3/toolkit/content/widgets/tree.xml#41-42. We could lazify this some more for this particular case (since the trees are not visible), but ultimately I'm assuming this lookup will need to be optimized in order to get QR to parity on other tests that do display trees (like about_preferences_basic). Jeff, do you have any more details about slow path for trees and any plans to mitigate it to reach perf parity?
Flags: needinfo?(jmuizelaar)
(In reply to Brian Grinstead [:bgrins] from comment #3) > Interesting that this is QuantumRender only. I've been requested to skip > those on try pushes to save resources which is why this was missed before > landing. > > We could lazify this some more for this particular case (since the trees are > not visible), but ultimately I'm assuming this lookup will need to be > optimized in order to get QR to parity on other tests that do display trees > (like about_preferences_basic). Jeff, do you have any more details about > slow path for trees and any plans to mitigate it to reach perf parity? The slowness here on treeBoxObject.columns doesn't seem specific to trees. .columns is causing a restyle which is causing us to create the compositor for the first time. Did this change move around the initialization of things?
Flags: needinfo?(jmuizelaar) → needinfo?(bgrinstead)
(In reply to Jeff Muizelaar [:jrmuizel] from comment #4) > (In reply to Brian Grinstead [:bgrins] from comment #3) > > Interesting that this is QuantumRender only. I've been requested to skip > > those on try pushes to save resources which is why this was missed before > > landing. > > > > We could lazify this some more for this particular case (since the trees are > > not visible), but ultimately I'm assuming this lookup will need to be > > optimized in order to get QR to parity on other tests that do display trees > > (like about_preferences_basic). Jeff, do you have any more details about > > slow path for trees and any plans to mitigate it to reach perf parity? > > The slowness here on treeBoxObject.columns doesn't seem specific to trees. > .columns is causing a restyle which is causing us to create the compositor > for the first time. > Did this change move around the initialization of things? Oh, quite possibly. I think we can delay this for now and wait for the tree to get constructed due to layout. Although eventually when we migrate the tree binding to Custom Element we won't get that layout hook anymore and will end up needing to run some of this code earlier on. At what point do we expect to / want to create the compositor during startup? We can look into pushing tree construction back if there's a specific event / point in time we can wait for. Victor - I suspect if we basically skip the call to `this.parentNode` (https://searchfox.org/mozilla-central/rev/b03a62c3c82316e733a3b09622c1cb7e59f64cc3/toolkit/content/widgets/tree.js#160-161) in the case when `this.isRunningDelayedConnectedCallback`, similar to what we do with treecol (https://searchfox.org/mozilla-central/rev/b03a62c3c82316e733a3b09622c1cb7e59f64cc3/toolkit/content/widgets/tree.js#236-238) that would do the trick. I'm pretty sure we'll also have to then do a call to this._ensureColumnOrder() in the tree constructor - it looks like tree doesn't manage that itself currently, but it'd make sense to do so.
Flags: needinfo?(bgrinstead) → needinfo?(jmuizelaar)
I'm not exactly sure where it ended up. Dan and Matt have both looked at WebRender startup more recently and can probably give a better answer.
Flags: needinfo?(matt.woodrow)
Flags: needinfo?(jmuizelaar)
Flags: needinfo?(dglastonbury)
Waiting for the MozAfterPaint should give you a good time to add things that might depend on the compositor being available. Looks like there's also a WR bug where shader compiling isn't async like it should be. I filed https://github.com/servo/webrender/pull/3329 for that.
Flags: needinfo?(matt.woodrow)
(In reply to Matt Woodrow (:mattwoodrow) from comment #7) > Waiting for the MozAfterPaint should give you a good time to add things that > might depend on the compositor being available. > > Looks like there's also a WR bug where shader compiling isn't async like it > should be. I filed https://github.com/servo/webrender/pull/3329 for that. Do you expect your patch to webrender will resolve this without changes on the browser chrome side? Or will this still need to be deferred until MozAfterPaint?
Flags: needinfo?(matt.woodrow)
I *think* it will be. I'll try get it landed ASAP, and we can see where we end up.
Flags: needinfo?(matt.woodrow)
To be clear, I think that it will be sufficient to resolve the issue, without browser chrome side changes.
Flags: needinfo?(vporof)
Bug 1508348 is in central now, and it looks like the regression is gone. Probably worth waiting for the official perfherder alert, but I think we should be sorted here.
Depends on: 1508348
(In reply to Matt Woodrow (:mattwoodrow) from comment #11) > Bug 1508348 is in central now, and it looks like the regression is gone. > > Probably worth waiting for the official perfherder alert, but I think we > should be sorted here. Thank you!
(In reply to Matt Woodrow (:mattwoodrow) from comment #11) > Bug 1508348 is in central now, and it looks like the regression is gone. > > Probably worth waiting for the official perfherder alert, but I think we > should be sorted here. I confirm this got fixed! Even better, ts_paint_webext got a small extra boost. == Change summary for alert #17694 (as of Tue, 20 Nov 2018 07:59:28 GMT) == Improvements: 6% ts_paint_webext windows10-64-qr opt e10s stylo 369.33 -> 346.08 5% ts_paint windows10-64-qr opt e10s stylo 360.33 -> 343.00 5% sessionrestore windows10-64-qr opt e10s stylo 358.17 -> 341.17 For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=17694
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Status: RESOLVED → VERIFIED
Flags: needinfo?(dglastonbury)
You need to log in before you can comment on or make changes to this bug.