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

HTTP2 stream priority support #13

Open
joamag opened this issue Aug 10, 2016 · 3 comments
Open

HTTP2 stream priority support #13

joamag opened this issue Aug 10, 2016 · 3 comments
Assignees
Labels
enhancement New feature or request p-high High priority issue

Comments

@joamag
Copy link
Contributor

joamag commented Aug 10, 2016

Description

While the base HTTP2 server implementation for Netius is developed, a proper support for priorities is still not developed leaving the output channel "unprotected" against large unimportant chunks of data that fill the space of the more important HTML, Javascripts, etc chunks.

Current HTTP2 performance under real browser scenarios is limited by the lack if priority support and the total loading times are often larger than the HTTP1.1 equivalents.

Notes

The delaying of the dependent streams should be performed at two different levels:

  • CPU/RAM, meaning that the on_data should not be triggered while the stream is not ready
  • Bandwidth, meaning that no bytes are sent back to the client while the parent streams are not completed or blocked, a delay operation is done on all of the data frames of the stream until the parent frame unblock its task, this may be done by using part of the available_stream/delay_frame implementation

Note that the most important part point is the one about blocking the bandwidth, as that's the most limited resource

Benchmarking

The page loading performance of the Netius HTTP2 server should be equivalent to the one offered by other HTTP2 servers like nghttp2 for that proper comparison must be created.

References

@joamag joamag added enhancement New feature or request p-high High priority issue labels Aug 10, 2016
@joamag joamag self-assigned this Aug 10, 2016
@joamag joamag changed the title HTTP2 Priority support HTTP2 stream priority support Aug 10, 2016
@joamag
Copy link
Contributor Author

joamag commented Aug 10, 2016

It has been proved by using an NGINX reverse proxy implementation that its possible to archive better performance using an HTTP2 server than using the same back end with HTTP1 so the priorities should be the answer for that better performance.

Netius Performance

netius

NGINX Performance

nginx

@joamag
Copy link
Contributor Author

joamag commented Aug 10, 2016

Maybe I'll need to get back to the "old" strategy of "marking" the pending frame information as sent so that I can unify the strategy for blocked streams because of connection/stream starvation and blocked streams because of dependencies unmet.

@joamag
Copy link
Contributor Author

joamag commented Sep 1, 2016

This is the initial idea on how to attack the problem:

0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request p-high High priority issue
Projects
None yet
Development

No branches or pull requests

1 participant