Open Bug 1568730 Opened 5 years ago Updated 1 month ago

Content process stalls in SyncObjectD3D11Client::Synchronize during startup

Categories

(Core :: Graphics: Layers, defect, P3)

60 Branch
defect

Tracking

()

Performance Impact low

People

(Reporter: aswan, Assigned: mconley)

References

Details

(Keywords: perf:responsiveness, perf:startup)

This is a profile of browser startup on the 2018 reference device with the PaintThread captured: https://perfht.ml/2Y1br1j

It shows that the privileged content process (the content process where about:home is loaded) stalls for several seconds waiting for "Flushing async paints". The stacks in the PaintThread at that time call into libraries that aren't symbolicated but a chunk of time appears to be stalled in SyncObjectD3D11Client::Synchronize()

:jya, picked you semi-randomly as somebody who has touched this code recently. Is this pause something you expect to see? Whatever is happening during this time, it is blocking the main thread in the privileged content process which has a substantial impact on how quickly we can draw about:home at startup.

Flags: needinfo?(jyavenard)

Bug 1568652 appears to be the same issue, with an assert caused by hitting the timeout.
Crash signature: https://crash-stats.mozilla.org/signature/?signature=mozilla%3A%3Agfx%3A%3ACriticalLogger%3A%3ACrashAction

See Also: → 1568652
Priority: -- → P3
Flags: needinfo?(mconley)

(In reply to Andrew Swan [:aswan] from comment #1)

:jya, picked you semi-randomly as somebody who has touched this code recently. Is this pause something you expect to see? Whatever is happening during this time, it is blocking the main thread in the privileged content process which has a substantial impact on how quickly we can draw about:home at startup.

TBH I have no clue.

Bas is the author of that code, maybe he can help.

Flags: needinfo?(jyavenard) → needinfo?(bas)

I spoke to jrmuizel about this late last week. His interpretation of the profile was that we're blocked waiting for the GPU to finish being blocked doing something. It's unfortunately unclear what the GPU is blocked doing.

He suggested using a tool like Concurrency Visualizer to try to get a sense of what the GPU is waiting for.

Flags: needinfo?(mconley)
Blocks: 1566454
Whiteboard: [fxperf] → [fxperf:p2]

Mike's reply is accurate.

Flags: needinfo?(bas)
No longer blocks: 1566454
Whiteboard: [fxperf:p2] → [qf]

This is a non webrender thing, with WebRender, most of the stuff has been moved to the GPU process, so marking this as p3.

Whiteboard: [qf] → [qf:p3:responsiveness]

I'd like to at least get this investigated enough so that we can know what's happening here. I'm going to try to use UIforETW / WPA to try to sort this out.

Assignee: nobody → mconley
Whiteboard: [qf:p3:responsiveness] → [qf:p3:responsiveness][fxperf]
Whiteboard: [qf:p3:responsiveness][fxperf] → [qf:p3:responsiveness][fxperf:p3]
Performance Impact: --- → P3
Whiteboard: [qf:p3:responsiveness][fxperf:p3] → [fxperf:p3]
Severity: normal → S3
Keywords: perf:startup
Whiteboard: [fxperf:p3]
You need to log in before you can comment on or make changes to this bug.