Open Bug 1881102 Opened 9 months ago Updated 4 months ago

Vsync IPC messages starved by setTimeout in this testcase

Categories

(Core :: Layout, defect)

defect

Tracking

()

People

(Reporter: mstange, Unassigned, NeedInfo)

References

(Blocks 1 open bug)

Details

Profile: https://share.firefox.dev/3UNCwBs

Steps to reproduce:

  1. Open this page in a tab: https://codepen.io/sschepis/full/wvqzOr
  2. Open another tab.
  3. Start the profiler.
  4. Switch back to the codepen tab.
  5. Wait for 5 seconds.
  6. Capture a profile.

Expected results:
In the profile, we should see one (attempted) refresh tick per received Vsync IPC message.

Actual results:
The profile on my machine https://share.firefox.dev/3UNCwBs shows many more IPCIn markers for PVsync::Msg_Notify than it shows RefreshDriverTick markers; there are around 5 IPC messages per tick.
The only other work on the thread is the setTimeout runnables.

Flags: needinfo?(smaug)

The Bugbug bot thinks this bug should belong to the 'Core::Gecko Profiler' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: General → Gecko Profiler

This is kind of opposite what we had to do for sp3, since there we were running refreshdriver too often.
Not sure what could be done here. (We've been moving towards more similar behavior what Chrome has where vsync effectively doesn't have quite so high priority)

Flags: needinfo?(smaug)

Well, in this profile it runs even less frequently than what you'd get if you did a setTimeout(refreshDriverTick, 0) when receiving the IPC message.

That is what happens with sp3 too.

The severity field is not set for this bug.
:canova, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(canaltinova)

Moving this back to the "General" component as it's not a profiler issue.

Component: Gecko Profiler → General
Flags: needinfo?(canaltinova)
Component: General → Graphics

The severity field is not set for this bug.
:bhood, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(bhood)
Blocks: gfx-triage
Flags: needinfo?(bhood)
No longer blocks: gfx-triage
Component: Graphics → DOM: Events

RefreshDriver is a layout thingie -> layout

Component: DOM: Events → Layout
See Also: → 1907795

The severity field is not set for this bug.
:alaskanemily, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(emcdonough)
You need to log in before you can comment on or make changes to this bug.