I found a big source of noise in system health memory benchmarks.
The benchmarks force garbage collection only on the main renderer (the one that DevTools is connected to). For all other renderers (OOPIFs) the memory dump is taken without any garbage collection. One some pages there are 8-10 renderers.
The traces on perfbots suggest that fixing this issue would reduce the variance by ~10x.
I see two possible solutions:
1) Introduce a new DevTools collectGarbage API that forces garbage collection on all renderer processes.
2) Add a new memory dump request argument that specifies whether the dump is deterministic or not.
A memory dump provider can then force garbage collection if it sees a deterministic request.
(This would require changing MemoryDumpArgs, MemoryDumpRequestArgs, and all the corresponding code).
I would vote for solution 2.
primiano@, ssid@, do you see any issues with solution 2? Or maybe there is better solution?
Comment 1 by perezju@chromium.org
, Jan 17 (5 days ago)