Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Servo enters death spiral if frontend outpaces webrender backend #16621

Open
Gankra opened this issue Apr 26, 2017 · 0 comments
Open

Servo enters death spiral if frontend outpaces webrender backend #16621

Gankra opened this issue Apr 26, 2017 · 0 comments
Labels

Comments

@Gankra
Copy link
Contributor

@Gankra Gankra commented Apr 26, 2017

If you simulate the webrender backend struggling by adding the following to the ApiMsg::SetDisplayList handler in render_backend.rs:

::std::thread::sleep(::std::time::Duration::from_millis(20));

servo enters a death spiral where it just endlessly piles display lists into the queue for webrender to render. Each frame gains ever-increasing latency, and any attempt to interact with the page (i.e. scrolling) triggers a complete lock up, as the system blocks on catching up.

You can visibly see this with -Zwr-stats, as the "message send time" begins to monotonically climb (message send time being time_display_list_processed - time_display_list_built).

In more realistic situations where we only falter for a few frames, this causes perceptible lag in interactions.

@jdm jdm added the I-perf-slow label Apr 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.