Skip to content
This repository has been archived by the owner on Aug 11, 2020. It is now read-only.

[WIP] benchmark: add basic QUIC benchmark #182

Draft
wants to merge 110 commits into
base: master
Choose a base branch
from
Draft

[WIP] benchmark: add basic QUIC benchmark #182

wants to merge 110 commits into from

Conversation

addaleax
Copy link
Member

This is currently WIP, because it turns out that the retransmission timing is currently impractical for benchmarking (about 2/3 of the time are just spent waiting for the retransmission timer).

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines

@jasnell
Copy link
Member

jasnell commented Oct 16, 2019

Note: I believe @tatsuhiro-t is either planning on adding QUIC support to h2load or has already done so. If not, I definitely think I may open a PR to do so as that would make benchmarking QUIC significantly easier

@tatsuhiro-t
Copy link

Check out https://github.com/nghttp2/nghttp2/tree/quic#running-h2load-against-http3-server
It is h2load with HTTP/3 support.

@jasnell
Copy link
Member

jasnell commented Oct 17, 2019

Thank you @tatsuhiro-t :-)

addaleax and others added 27 commits December 11, 2019 12:33
Allow using the handle more directly for I/O in other parts of
the codebase.

PR-URL: #165
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Daniel Bevenius <[email protected]>
Co-authored-by: Anna Henningsen <[email protected]>
Co-authored-by: Daniel Bevenius <[email protected]>
Co-authored-by: gengjiawen <[email protected]>
Co-authored-by: James M Snell <[email protected]>
Co-authored-by: Lucas Pardue <[email protected]>
Co-authored-by: Ouyang Yadong <[email protected]>
Co-authored-by: Juan José Arboleda <[email protected]>
Co-authored-by: Trivikram Kamat <[email protected]>
Fixes: #59
PR-URL: #145
Reviewed-By: James M Snell <[email protected]>
PR-URL: #147
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Introduced in aa99a6a.

PR-URL: #149
Reviewed-By: James M Snell <[email protected]>
PR-URL: #154
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Daniel Bevenius <[email protected]>
PR-URL: #153
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Daniel Bevenius <[email protected]>
PR-URL: #152
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Daniel Bevenius <[email protected]>
Previously, if the expiry timestamp was in the future by less
than 1ms, the retransmission timer would not have been scheduled.

(This also removes an unused line from the test that this
problem made flaky.)

PR-URL: #157
Reviewed-By: James M Snell <[email protected]>
If we set `preferredAddressPolicy` to `accept` on `QuicClientSession`
but receives an invalid preferred address, e.g. we don't define
`preferredAddress` on the server, the `QuicClientSession` should still
work. Before this PR, the included test will cause segmetation fault.

PR-URL: #155
Reviewed-By: James M Snell <[email protected]>
It would be better to add a test to ensure that the timeout is
greater than the triple PTO if we can get the PTO.

PR-URL: #160
Reviewed-By: James M Snell <[email protected]>
This reverts commit 170c5d0.

PR-URL: #138
Reviewed-By: Anna Henningsen <[email protected]>
This reverts commit ecda77c.

PR-URL: #138
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #138
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #138
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #138
Reviewed-By: Anna Henningsen <[email protected]>
This commit will need to be submitted upstream then backed out
once it lands and we can update

PR-URL: #138
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #138
Reviewed-By: Anna Henningsen <[email protected]>
The recent commits have broken the build, tests, and linting.

One cctest is not fixed but rather disabled here.

PR-URL: #162
After ngtcp2 being updated, `ngtcp2_conn_get_idle_timeout` is renamed as
`ngtcp2_conn_get_idle_expiry` which returns `ngtcp2_tstamp` instead of
`ngtcp2_duration`.

Refs: https://github.com/ngtcp2/ngtcp2/blob/6f40668cdce7db7c043d3a80c07f379841d8c51e/lib/ngtcp2_conn.c#L8604
PR-URL: #166
Reviewed-By: Anna Henningsen <[email protected]>
Fixes: #75
PR-URL: #150
Reviewed-By: James M Snell <[email protected]>
jasnell and others added 12 commits December 11, 2019 13:59
PR-URL: #213
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #213
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #216
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #216
Reviewed-By: Anna Henningsen <[email protected]>
Generate stateless reset token cryptographically

Fixes: #62
PR-URL: #215
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #217
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #217
Reviewed-By: Anna Henningsen <[email protected]>
Currently the doc target fails and this commit attempts for fix these
errors.

PR-URL: #221
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Anna Henningsen <[email protected]>
PR-URL: #224
Reviewed-By: Anna Henningsen <[email protected]>
@jasnell
Copy link
Member

jasnell commented Dec 13, 2019

Heads up, this will need to be rebased

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants