GPU memory optimizations for non-interactive foreground windows |
|||||
Issue descriptionWe currently drop most GPU resources when a tab is backgrounded. Unfortunately, users can still consume a lot of GPU memory by opening many individual windows and having many individual foreground tabs. In most cases, the user is only scrolling/interacting-with a single tab at a time. It could be very valuable to detect which foreground tabs are not interactive and try to minimize memory use for these. There are some things we could do which would have minimal impact, but could save a lot of memory: - Drop prepaint tiles / stop prepainting for a non-interactive foreground tab that has been non-interactive for longer than x seconds. - Drop not-recently-used cached images for non-interactive tabs - Probably others?
,
Feb 13 2018
vmiura@, this issue seems to be contributing to some reports of GPU proc slowdown we're getting reported (see blocked bug). We've seen other similar reports in the past. It feels like this should be worked on with higher priority. I don't currently have the bandwidth to look at this, but was wondering if anyone in MTV or WAT might have time (it's a general tile management issue)? I'm happy to act as a code-review / design resource for whoever works on this.
,
Feb 13 2018
Some ongoing work related to window-occlusion should help on chromeos. +fdoray@, who is working on this. I believe there is some work happening for tab-discarding ... which I think fdoray@ is also involved in? Although I don't know if that would work for foreground windows.
,
Feb 13 2018
Also, draw-occlusion should help on Chromeos. +yiyix@ who is working on that.
,
Feb 13 2018
Re #3/4: Thanks for the info. Occlusion will likely help, as it will reduce the number of GPU textures needed frame over frame from DisplayCompositor drawing. This will definitely reduce swapping, but won't address the root cause of the swapping - high memory usage due to overly aggressive caching of prepaint tiles. Re tab discarding: this would likely address things, but I'm guessing this is impossible for a foreground window, but would be happy to be wrong (can we discard a fully occluded window?). Either way, it feels like we still want to do work to drop prepaint tiles for non-interactive foreground windows, as this should reduce overall memory usage independently of these other efforts.
,
Feb 14 2018
I'm working on handling fully occluded tabs exactly the same way as non-active tabs on Chrome OS. Progress is tracked in issue 668690. Once this is done, any optimization that we have for non-active tabs will *just work* for fully occluded tabs. That includes not rendering frames, throttling Javascript and allowing the tab to be discarded when the machine is under memory pressure. varunmohan@google.com just started working on bringing the same optimization to Windows. |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by ericrk@chromium.org
, Feb 13 2018