Benjamin Saunders
1159ae3c65
Non-exhaustive ClientConfig
2021-11-10 11:25:19 +01:00
Benjamin Saunders
b923c4c8b0
Pass SocketAddr by value
...
We always consume this by value in the end, and it's a little more
ergonomic.
2021-10-29 20:12:45 +02:00
Benjamin Saunders
5d1b6a101b
Remove EndpointBuilder
...
Now that rustls configuration is more straightforward, this is not
adding significant value.
2021-10-29 20:12:45 +02:00
Dirkjan Ochtman
78dc23614f
Disable default features for rustls
...
In rustls 0.20, TLS 1.2 is optional but enabled by default. We also
don't need to depend on rustls enabling logging.
2021-10-26 11:05:30 -07:00
Dirkjan Ochtman
9daaa15da2
Upgrade to rustls 0.20
2021-10-26 11:05:30 -07:00
Dirkjan Ochtman
5be1824901
Upgrade to tracing-subscriber 0.3
2021-10-25 10:50:32 -07:00
Dirkjan Ochtman
72b99b0372
Drop authors from Cargo manifests
...
Following RFC 3052.
2021-10-07 09:47:04 +02:00
Dirkjan Ochtman
fed3c5cb39
Require explicit construction of ServerConfigs
2021-09-29 10:12:44 -07:00
Dirkjan Ochtman
a7efd92044
Require explicit construction of ClientConfigs
2021-09-29 10:12:44 -07:00
Wesley Rosenblum
2d30749e97
Make json output an optional feature
2021-08-19 15:23:31 +02:00
Wesley Rosenblum
48b094cca8
Add json module to output results in json format
2021-08-19 15:23:31 +02:00
Wesley Rosenblum
566d10f914
Add OpenStreamStats to track statistics per stream
2021-08-19 15:23:31 +02:00
Wesley Rosenblum
6997d2d2a9
Move stats types into a separate module
2021-08-19 15:23:31 +02:00
Marcel Märtens
b224d1d0fa
switch to futures_utils in tests and benches, also use futures_utils isntead of futures_core
2021-08-11 10:27:32 +02:00
Dirkjan Ochtman
d78b3187a9
Apply clippy suggestions from Rust 1.54
2021-07-30 13:29:32 -07:00
Matthias Einwag
e3060d3ff2
Print connection statistics in perf client and server
...
This adds the `--conn-stats` flag to both CLI tools, which will print
the connection statistics together with other data every 2s.
2021-05-28 09:05:53 +02:00
Luca Barbato
5ab895ba19
Add a mean to set the local address in the perf_client
2021-05-24 13:20:38 +02:00
Luca Barbato
bd2a795dd9
Bind to the right ip family the local socket
2021-05-20 11:14:13 -07:00
Thomas de Zeeuw
49475c22b2
Update to socket2 v0.4
2021-03-21 14:39:11 +01:00
Matthias Einwag
ff79550cd8
Print perf_client RPS in floating point format
...
For large requests and high latency connections the number
showed 0 most of the time which isn't too helpful.
2021-03-18 13:43:21 -07:00
Matthias Einwag
2870519f6e
perf: Use dual stack socket for endpoints
...
Users found it rather confusing that binding to the default address
(::0) doesn't allow incoming connections via IPv4 on windows.
This change will allow for this, by using a IPv6 socket and
disabling IPv6-only on all platforms. This lets the windows and unix
implementations behave equally.
2021-03-08 06:38:34 +01:00
Matthias Einwag
fe03f7d2de
Rename perf server and client
...
The executable names conflicted with the interop server:
> The bin target `server` in package `perf v0.1.0 (C:\Users\matth\Code\rust\quinn\perf)` has the same output filename as the bin target `server` in package `interop v0.1.0 (C:\Users\matth\Code\rust\quinn\interop)`.
> Colliding filename is: C:\Users\matth\Code\rust\quinn\target\debug\server.pdb
> The targets should have unique names.
2021-03-08 06:38:34 +01:00
Dirkjan Ochtman
0f285bd751
perf: tweak style in bind_socket()
2021-03-04 12:36:49 -08:00
Dirkjan Ochtman
85dde101bd
perf: adopt more convential crate layout
2021-03-04 12:36:49 -08:00
Matthias Einwag
da1014c913
Allow to set send and receive buffer sizes in perf application
...
Also default to 2MB, which provides reasonable baseline performance.
2021-03-04 11:01:42 +01:00
Matthias Einwag
f38a877b76
Print perf server errors with context
...
This avoids losing error context
2021-03-04 11:01:42 +01:00
Matthias Einwag
516dcd8885
Use debug instead of trace messages in the perf server
...
This provides basic output without seeing all the quic packet info in between.
2021-03-04 11:01:42 +01:00
Matthias Einwag
312c0f041c
Perf: Use owned buffers
...
Use zero-copy APIs when sending data in perf application.
Performance difference:
1. First line is before
2. Second line is after (but with only the download write change)
```
│ Duration │ FBL | Upload Throughput | Download Throughput
──────┼───────────┼───────────┼───────────────────┼────────────────────
AVG │ 5.00ms │ 1.00ms │ 332.82 MiB/s │ 334.20 MiB/s
AVG │ 5.00ms │ 0.00ns │ 332.64 MiB/s │ 335.96 MiB/s
```
=> Makes less than 1%. Still neat to have
2021-03-02 09:13:00 +01:00
Matthias Einwag
3de2727b94
Perf: Prefer more efficient cipher suites
...
Prefer AES128 in order to maximize throughput
2021-03-02 07:01:16 +01:00
Matthias Einwag
82a065ac3e
Make perf up and download more efficient
...
Pass a bigger buffer to write calls to minimize the amount of write calls.
2021-03-02 07:01:16 +01:00
Matthias Einwag
7700046af6
Aggregate perf stats and print them
2021-03-02 07:01:16 +01:00
Matthias Einwag
3bbb15181f
Capture per request timings in perf client
2021-03-02 07:01:16 +01:00
Matthias Einwag
f811d3635c
Allow to specify the perf client to run for a certain amount of time
2021-03-02 07:01:16 +01:00
Matthias Einwag
e8af8fd507
Make handling of uni and bidi streams equal
...
Uni response streams are now accepted as part of the
request lifecycle, which makes it easier to gather stats.
2021-03-02 07:01:16 +01:00
Matthias Einwag
12039602ae
perf: use tokio::try_join instead of select
...
We want all subtasks to complete, and not only a single one.
2021-03-02 07:01:16 +01:00
Benjamin Saunders
a9aaf40943
Implement perf protocol for standardized benchmarking
2021-02-28 22:31:43 +01:00