Closed Bug 2023900 Opened 1 month ago Closed 1 month ago

8.66 - 2.51% speedometer3 TodoMVC-JavaScript-ES6-Webpack-Complex-DOM/DeletingAllItems/Async + 5 more (Linux) regression on Mon March 9 2026

Categories

(Core :: Graphics: WebRender, defect)

defect

Tracking

()

RESOLVED FIXED
150 Branch
Tracking Status
firefox-esr140 --- unaffected
firefox148 --- unaffected
firefox149 --- unaffected
firefox150 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: gw)

References

(Regression)

Details

(Keywords: perf, perf-alert, regression)

Attachments

(1 file)

Perfherder has detected a browsertime performance regression from push 399801f5e270aefd936ab342512d1991487d4585. As author of one of the patches included in that push, we need your help to address this regression.

Please acknowledge, and begin investigating this alert within 3 business days, or the patch(es) may be backed out in accordance with our regression policy.

Regression Test Platform Options Absolute values [old vs new] Performance Profiles
9% speedometer3 TodoMVC-JavaScript-ES6-Webpack-Complex-DOM/DeletingAllItems/Async (doc) linux1804-64-shippable-qr fission webrender 2.44 ms -> 2.65 ms Before/After
7% speedometer3 TodoMVC-Angular-Complex-DOM/DeletingAllItems/Async (doc) linux1804-64-shippable-qr fission webrender 2.50 -> 2.68 Before/After
5% speedometer3 TodoMVC-React-Complex-DOM/DeletingAllItems/Async (doc) linux1804-64-shippable-qr fission webrender 2.50 ms -> 2.64 ms Before/After
3% speedometer3 TodoMVC-React-Complex-DOM/Adding100Items/Async (doc) linux1804-64-shippable-qr fission webrender 5.51 -> 5.70 Before/After
3% speedometer3 TodoMVC-Angular-Complex-DOM/CompletingAllItems/Async (doc) linux1804-64-shippable-qr fission webrender 5.40 ms -> 5.56 ms Before/After
3% speedometer3 TodoMVC-React-Complex-DOM/CompletingAllItems/Async (doc) linux1804-64-shippable-qr fission webrender 5.39 ms -> 5.52 ms Before/After

Support & Actionable Steps

For questions, please contact fbilt@mozilla.com. You can also find help on Slack (#perf-help) or Matrix (#perftest).

Action guide details:

Flags: needinfo?(mozilla)

Set release status flags based on info from the regressing bug 2021812

The SC origin reference frame change (bug 2021812) caused a Speedometer 3
regression because each new reference frame triggers PushOverrideForASR,
which allocates a fresh std::unordered_map for the clip cache and destroys
it on pop. Profile analysis showed 90% of the BeginList overhead was in
malloc/free from this HashMap churn.

Replace the std::stack<ClipIdMap> with a std::vector<ClipIdMap> + index,
reusing cleared maps instead of allocating new ones. unordered_map::clear()
preserves the bucket array, so subsequent inserts don't allocate either.

The attached patch should resolve (most of) the regression, any remaining can be resolved with ongoing work over the next month or so in this area.

Flags: needinfo?(mozilla)
Assignee: nobody → mozilla
Status: NEW → ASSIGNED
Pushed by gwatson@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/ffcf0482a1d7 https://hg.mozilla.org/integration/autoland/rev/173224712dcc Pool ClipManager clip cache maps to avoid alloc/free churn r=gfx-reviewers,nical
Pushed by abutkovits@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/87f130aeb7ad https://hg.mozilla.org/integration/autoland/rev/756771847c19 Revert "Bug 2023900 - Pool ClipManager clip cache maps to avoid alloc/free churn r=gfx-reviewers,nical" for causing failures at test_mousescroll.xhtml.
Pushed by ctuns@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/ec4b440098d2 https://hg.mozilla.org/integration/autoland/rev/bb8411db5b14 Pool ClipManager clip cache maps to avoid alloc/free churn r=gfx-reviewers,nical
Status: ASSIGNED → RESOLVED
Closed: 1 month ago
Resolution: --- → FIXED
Target Milestone: --- → 150 Branch
QA Whiteboard: [qa-triage-done-c151/b150]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: