Issue metadata
Sign in to add a comment
|
Chrome Remote Desktop "leaks" ~30MB GPU memory every time it is minimized & restored |
||||||||||||||||||||||
Issue descriptionChrome Version: 65.0.3299.0 OS: ChromeOS What steps will reproduce the problem? (1) Configure Chrome for SurfaceLayer-based video playback. (2) Connect to a Chrome Remote Desktop host. (3) Use it for a while. Use other windows and come back to it. Minimize/maximize. (Not sure exactly what triggers the leak, sorry!) (4) Disconnect from the host, without closing the CRD window. What is the expected result? Expect that CRD's GPU memory usage drops at #4, typically to 20MB or less. What happens instead? GPU memory drops on disconnected, but is still 200MB or more. Actually closing the CRD window does free the memory. I'm running w/ SurfaceLayer video, and Chromoting renders using PPAPI's VideoDecoder API, so speculatively marking this as a SurfaceLayer bug.
,
Jan 10 2018
,
Jan 12 2018
,
Jan 12 2018
I am not the right owner for this. Since this only manifests on one device and the relevant CRD code has not changed in years it's more likely a bug/leak in the APIs we use.
,
Jan 12 2018
->lethalantidote who's working on SurfaceLayer-based video, I believe? Does this need to RBB if it needs a configuration step?
,
Jan 12 2018
As per comment #1, this doesn't require that SurfaceLayer video be enabled; I'm running dev-channel with completely default settings right now and still seeing the issue. The issue only seems to repro on the Teemo device, FWIW, not on Kevin nor Bob.
,
Jan 12 2018
,
Jan 12 2018
,
Jan 12 2018
->posciak for ChromeOS-specific video things
,
Jan 13 2018
Comparing Task Manager to chrome:tracing w/ memory-infra enabled, I see: Task Manager - GPU: RAM 230MB, GPU 884MB - CRD: RAM 64MB, GPU 535MB chrome:tracing - GPU: Private footprint 215MB, gpu 129MB, malloc 208MB - CRD: Private footprint 62MB, cc 212MB, gpu N/A, malloc 10MB, v8 9MB There seems to be a pretty huge discrepancy between the GPU memory reported by tracing and by Task Manager for the GPU process, and the "gpu" column in tracing bears no relation whatsoever to the values I see for tabs in Task Manager, FWIW, even if you e.g. combine "cc" and "gpu" columns.
,
Jan 13 2018
I suspect pepper and video decode are not instrumented for memory-infra, that could be part of the discrepancy.
,
Jan 13 2018
Using chrome://tracing, it seems that this is related to the "cc" memory usage - if I perform the minimize/restore cycle and take memory-infra traces before and after then I see a 20MB "cc" memory jump each time.
,
Jan 13 2018
Also confirmed that the issue still repros on this device even if hardware video decode is disabled via about:flags. So it seems that "cc" is accumulating texture memory in the renderer, though not strictly leaking it (CRD windows share a single renderer, and closing one window will free any memory that window has leaked), on each minimize/resume. There's still ~10-15MB of memory unaccounted for, as compared to the GPU-memory increase, though.
,
Jan 13 2018
,
Jan 15 2018
I can reproduce this issue on Soraka 65.0.3294.0 (platform 10214.0.0) and Eve 65.0.3294.0 (platform 10214.0.0). Cannot reproduce on Eve 63.0.3239.48 (platform 10032.36.0).
,
Jan 16 2018
Bisecting on Eve shows it's a regression between R65.0.3287.0 (platform 10210.0.0) and R65.0.3293.0 (platform 10211.0.0).
,
Jan 16 2018
wez@, are you able to attach the memory-infra traces you've taken? This will help narrow things down. The GPU process' GPU category in tracing should count all GL textures, regardless of where they come from. But video may do other things, so it's possible we are missing some video instrumentation and that may explain the issue.
,
Jan 16 2018
Re #17: I can grab new traces easily enough. Do you need detailed memory-infra, i.e. with OOP heap-profiler enabled?
,
Jan 17 2018
My chromebox just updated to 65.0.3319.0, and I'm no longer able to repro this leak on minimize/restore. However, the device did more or less wipe its state during the update, due to a different bug, so I can't be 100% sure this isn't due to it now being in some different experiment group.
,
Jan 17 2018
Interesting, thanks for the update. If you see this again, I just need standard memory infra (no need for detailed). I'll try to grab an Intel Chromebook (seems to not happen on Arm, from earlier comments) and repro.
,
Jan 18 2018
vovoy@, can you still repro? If so, can you take a trace before/after the leak? For the trace, please select "manually select categories" > "memory-infra". All other categories can be ignored. Thanks for the help!
,
Jan 18 2018
I tested on Eve 65.0.3319.0 (platform 10302.0.0) and there is no memory leak with the repro steps.
,
Jan 18 2018
Given that neither original user who was able to reproduce can repro, closing this out as wont-fix. Please re-open if this appears again. |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by w...@chromium.org
, Jan 10 2018Components: Internals>GPU>Video
Labels: -Type-Bug -Pri-2 -M-66 M-65 Pri-1 Type-Bug-Regression
Owner: jamiewa...@chromium.org
Summary: Chrome Remote Desktop "leaks" ~30MB GPU memory every time it is minimized & restored (was: PPAPI + SurfaceLayer video playback appears to leak renderer GPU memory)