Closed Bug 1556243 Opened 5 years ago Closed 5 years ago

Reddit CSS for classicwow subreddit causes severe performance issues

Categories

(Core :: Graphics: WebRender, defect, P1)

67 Branch
x86_64
Windows 10
defect

Tracking

()

RESOLVED FIXED
Performance Impact high
Tracking Status
firefox-esr60 --- unaffected
firefox-esr68 --- disabled
firefox67 - wontfix
firefox67.0.1 - wontfix
firefox68 - wontfix
firefox69 + fixed
firefox70 --- fixed

People

(Reporter: dungeons, Assigned: aosmond)

References

(Blocks 1 open bug, Regression)

Details

(4 keywords)

Attachments

(1 obsolete file)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0

Steps to reproduce:

Visit https://www.reddit.com/r/classicwow/

Actual results:

Takes 10+ seconds for page to load, and any scrolling is very slow. This is on a fast, modern PC (8700k, 32 gig ram, RTX2070)

Expected results:

Fast performance, like every other subreddit.

Component: Untriaged → Performance
Keywords: perf
Product: Firefox → Core

I can't reproduce this issue.

Is this issue reproducible if you:

  • disable all extensions
  • start Firefox in Safe Mode[1]
  • after using "Refresh Firefox" feature[2]?

[1] = https://support.mozilla.org/en-US/kb/troubleshoot-firefox-issues-using-safe-mode
[2] = https://support.mozilla.org/en-US/kb/refresh-firefox-reset-add-ons-and-settings

Flags: needinfo?(dungeons)

I disabled addons (uBlock Origin + LastPass) and it seemed to help a bit. It's down to a 5-6 second load time and scrolling while loading freezes the browser for a second or two at at time. Also going to another tab, then back to this one is a 1-4 second load. Trying safe mode.

Flags: needinfo?(dungeons)

Super fast in safe mode. No lag when going on and off the tab, loads fast and scrolling while loading is smooth.

Looks like something is probably broken with your profile. You may want to backup your bookmarks (by exporting them) and your extensions (by exporting settings if extensions have this feature) or by doing backup of whole Firefox profile and start it from scratch on new one. Simple one, will be using "Refresh Firefox" feature[1].

You may also want to catch profile with Gecko Profiler[2], while doing steps to reproduce your issue and attach it here, so developers could look on it and investigate it.

[1] = https://support.mozilla.org/en-US/kb/refresh-firefox-reset-add-ons-and-settings
[2] = https://profiler.firefox.com/

Flags: needinfo?(dungeons)
Whiteboard: [qf]

I'm having similar issues as the reporter. This seems to be caused by webrender which is gradually being rolled out for Windows 10 + Nvidia users (tracked here). I can resolve the performance issues by manually turning webrender off through about:config.

Reproduction:

  1. Ensure webrender is enabled
  2. Go to a post such as this one.
  3. Page is very slow in general but will hang for a few seconds when collapsing comment trees.

All 12 threads (6 cores) will reach 100% utilization whenever I collapse comment trees.

Here's a profile I captured when closing comment trees.

I also tried this on Linux (Intel graphics) out of curiosity by manually enabling webrender and the same freezing behavior occurs for me there.

Flags: needinfo?(Virtual)

@ OussamaDanba - Thank you very much! Nice find.

Severity: normal → major
Status: UNCONFIRMED → NEW
Component: Performance → Graphics: WebRender
Ever confirmed: true
Flags: needinfo?(Virtual)
Keywords: regression, topperf
OS: Unspecified → Windows 10
Regressed by: 1541488
Hardware: Unspecified → x86_64

I can reproduce this on Nightly, with MBP running macOS 10.14. This seems very bad, collapsing a comment tree completely locks the whole browser.

Priority: -- → P1
Blocks: wr-perf, wr-69

It looks like this is caused by a large border image that we're not using shared memory for.

Depends on: 1408690
Flags: needinfo?(aosmond)

Profile shows a lot of memcpy action

I'm looking at getting the WR path working instead of the fallback path.

Assignee: nobody → aosmond
Whiteboard: [qf] → [qf:p1:responsiveness]

Before this patch, we would use fallback for all border images. Now for
all but vector images we will use the WebRender border images
primitives. Vector images are an exception because the fallback is
clever in that it upscales the vector image and clips to only draw the
region it requires. This avoids artifacting but to do something similar
for WebRender as it is currently defined, we would increase our CPU and
memory footprint as we would need to produce the entire vector image
upscaled, not just the parts we need. In the future we should change
WebRender to accept different image resources for each of the segments.

Attachment #9076253 - Attachment is obsolete: true

I confirmed in the latest nightly that bug 1409773 has resolved this for me. I requested uplift.

Flags: needinfo?(aosmond)
Depends on: 1409773
No longer depends on: 1408690
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Has Regression Range: --- → yes
Performance Impact: --- → P1
Whiteboard: [qf:p1:responsiveness]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: