Webrender consumes excessive amounts of memory.

NEW
Unassigned

Status

()

Core
Graphics: WebRender
P2
normal
4 months ago
a month ago

People

(Reporter: The 8472, Unassigned)

Tracking

(Blocks: 2 bugs)

Trunk
x86_64
Windows 10
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox56 unaffected, firefox57 unaffected)

Details

(Whiteboard: [wr-mvp] [gfx-noted])

(Reporter)

Description

4 months ago
Currently I'm seeing 6.3GB private bytes, 12GB working set size, 15.6GB virtual size consumed by the GPU process with webrender enabled.

------


nvidia driver: Version	22.21.13.8205

about:config:

gfx.webrender.enabled	true
gfx.webrender.force-angle	false
gfx.webrendest.enabled	true


memory report:

GPU (pid 152248)
Explicit Allocations

1,758.04 MB (100.0%) -- explicit
├──1,744.49 MB (99.23%) ── heap-unclassified
└─────13.55 MB (00.77%) ++ (5 tiny)

Other Measurements

134,217,727.94 MB (100.0%) -- address-space
├──134,205,137.77 MB (99.99%) ── free(segments=8751)
└───────12,590.17 MB (00.01%) ++ (2 tiny)

1,758.04 MB (100.0%) -- heap-committed
├──1,746.24 MB (99.33%) ── allocated
└─────11.80 MB (00.67%) ── overhead

10 (100.0%) -- observer-service
└──10 (100.0%) -- referent
   ├──10 (100.0%) ── strong
   └───0 (00.00%) ++ weak

      1,746.24 MB ── heap-allocated
          1.00 MB ── heap-chunksize
      1,923.00 MB ── heap-mapped
      4,763.62 MB ── private
      8,919.81 MB ── resident
      7,474.79 MB ── resident-unique
         39.02 MB ── system-heap-allocated
     12,588.11 MB ── vsize
131,741,728.13 MB ── vsize-max-contiguous
(Reporter)

Updated

4 months ago
Blocks: 1311790
If you turn on gfx.webrender.profiler.enabled you should get some numbers for the texture cache. Are the numbers high?

We currently do rounded clipping using mask layers and this can cause very high memory usage. Bug 1375059 should fix this.
(Reporter)

Comment 2

4 months ago
I did reset my gfx process, so I'm not seeing quite the same figures as before. Currently it's at 3.5/8.4/10G private/wss/virtual. It seems to climb with uptime or active use, shortly after the reset it was at 2GB each.

The texture cache looks fairly stable though, A8 cache at 192MB, RGBA8 cache at 3.5GB. I'll add another data point once it has climbed back up to the originally reported numbers.

Updated

3 months ago
Whiteboard: [gfx-noted]
(Reporter)

Comment 3

3 months ago
Could it be that textures are allocated twice? Process explorer shows 3GB GPU memory, but the working set size is about double that

16 A8 texture pages, 256MB
48 RGBA8 pages, 3181.75MB
251 font templates 435 MB

GPU (pid 249976)
Explicit Allocations

2,306.97 MB (100.0%) -- explicit
├──2,292.28 MB (99.36%) ── heap-unclassified
└─────14.68 MB (00.64%) ++ (5 tiny)

Other Measurements

134,217,727.94 MB (100.0%) -- address-space
├──134,201,710.05 MB (99.99%) ── free(segments=7628)
└───────16,017.89 MB (00.01%) -- (2 tiny)
        ├──15,571.27 MB (00.01%) -- commit
        │  ├──10,204.63 MB (00.01%) -- mapped
        │  │  ├──10,135.16 MB (00.01%) ── readwrite(segments=7696)
        │  │  ├──────69.23 MB (00.00%) ── readonly(segments=19)
        │  │  └───────0.23 MB (00.00%) ── writecopy(segments=1)
        │  ├───5,158.40 MB (00.00%) -- private
        │  │   ├──2,604.13 MB (00.00%) ── readwrite+writecombine(segments=68)
        │  │   ├──2,515.75 MB (00.00%) ── readwrite(segments=1159)
        │  │   ├─────37.74 MB (00.00%) ── readwrite+stack(segments=33)
        │  │   ├──────0.61 MB (00.00%) ── readwrite+guard(segments=33)
        │  │   ├──────0.13 MB (00.00%) ── execute-readwrite(segments=1)
        │  │   ├──────0.03 MB (00.00%) ── noaccess(segments=7)
        │  │   ├──────0.02 MB (00.00%) ── readwrite+nocache(segments=1)
        │  │   ├──────0.00 MB (00.00%) ── execute-read(segments=1)
        │  │   └──────0.00 MB (00.00%) ── readonly(segments=1)
        │  └─────208.25 MB (00.00%) -- image
        │        ├──123.20 MB (00.00%) ── execute-read(segments=72)
        │        ├───75.27 MB (00.00%) ── readonly(segments=233)
        │        ├────8.36 MB (00.00%) ── writecopy(segments=75)
        │        └────1.42 MB (00.00%) ── readwrite(segments=128)
        └─────446.62 MB (00.00%) -- reserved
              ├──432.29 MB (00.00%) ── private(segments=835)
              └───14.33 MB (00.00%) ── mapped(segments=4)

2,306.97 MB (100.0%) -- heap-committed
├──2,294.03 MB (99.44%) ── allocated
└─────12.94 MB (00.56%) ── overhead

10 (100.0%) -- observer-service
└──10 (100.0%) -- referent
   ├──10 (100.0%) ── strong
   └───0 (00.00%) ++ weak

      2,294.03 MB ── heap-allocated
          1.00 MB ── heap-chunksize
      2,484.00 MB ── heap-mapped
      5,202.66 MB ── private
      6,313.79 MB ── resident
      5,866.57 MB ── resident-unique
         90.17 MB ── system-heap-allocated
     16,017.83 MB ── vsize
131,306,666.69 MB ── vsize-max-contiguous
Priority: -- → P3
Do we need this and bug 1370998?
Blocks: 1386669

Updated

2 months ago

Updated

a month ago
Priority: P3 → P2
Whiteboard: [gfx-noted] → [wr-mvp] [gfx-noted]
status-firefox56: --- → unaffected
status-firefox57: --- → unaffected
You need to log in before you can comment on or make changes to this bug.