Dirkjan Ochtman
2c6aa43610
Apply clippy suggestions from Rust 1.66
2022-12-19 10:13:01 -08:00
Damien Deville
b80baa008d
Add --initial-max-udp-payload-size command line option for perf
...
client and server binaries to change the initial size of UDP
packet payload.
2022-10-28 09:24:03 +02:00
Damien Deville
cebfb270f6
Add --keylog command line option for perf client and server
...
binaries. This allow dumping crypto keys to disk using
SSLKEYLOGFILE env var.
2022-10-27 17:49:28 -07:00
Benjamin Saunders
7d51d2e57e
Remove Incoming stream in favor of Endpoint::accept
2022-10-23 08:18:42 +02:00
dependabot[bot]
f86dd7596d
Update rcgen requirement from 0.9.1 to 0.10.0
...
Updates the requirements on [rcgen](https://github.com/est31/rcgen ) to permit the latest version.
- [Release notes](https://github.com/est31/rcgen/releases )
- [Changelog](https://github.com/est31/rcgen/blob/master/CHANGELOG.md )
- [Commits](https://github.com/est31/rcgen/compare/v0.9.1...v0.10.0 )
---
updated-dependencies:
- dependency-name: rcgen
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-10-03 15:29:41 +02:00
Benjamin Saunders
6e4bcbb2fc
Drop NewConnection in favor of simpler API
2022-09-27 11:08:26 +02:00
Benjamin Saunders
ffa85f2c43
Abstract out async runtime
...
Co-authored-by: Yureka <yuka@yuka.dev >
2022-07-05 09:06:31 -07:00
Benjamin Saunders
fe93a68108
Replace structopt with its successor, clap 3
2022-07-03 21:02:33 +02:00
dependabot[bot]
16769e3fa9
Update rustls-pemfile requirement from 0.3.0 to 1.0.0
...
Updates the requirements on [rustls-pemfile](https://github.com/rustls/pemfile ) to permit the latest version.
- [Release notes](https://github.com/rustls/pemfile/releases )
- [Commits](https://github.com/rustls/pemfile/compare/v/0.3.0...v/1.0.0 )
---
updated-dependencies:
- dependency-name: rustls-pemfile
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-04-18 15:28:52 +02:00
Benjamin Saunders
c1bd43f3a6
Satisfy clippy
2022-04-08 17:51:22 +02:00
Dirkjan Ochtman
5f394099ec
Upgrade rcgen to 0.9.1
2022-02-11 13:48:07 -08:00
dependabot[bot]
d8615d9c2b
Update rustls-pemfile requirement from 0.2.1 to 0.3.0
...
Updates the requirements on [rustls-pemfile](https://github.com/rustls/pemfile ) to permit the latest version.
- [Release notes](https://github.com/rustls/pemfile/releases )
- [Commits](https://github.com/rustls/pemfile/compare/v/0.2.1...v/0.3.0 )
---
updated-dependencies:
- dependency-name: rustls-pemfile
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-02-07 14:31:13 +01:00
Benjamin Saunders
b2c24d957a
Drop futures-util dep from benchmarking tools
2021-12-29 07:34:22 +01:00
Benjamin Saunders
7ed94be3e4
Provide inherent next methods on streams
...
Allows for convenient use in async blocks by downstream code without a
futures_util dependency.
2021-12-21 07:03:27 +01:00
Dirkjan Ochtman
ee6bbf1d2a
Fix clippy suggestions from 1.57
2021-12-10 10:29:12 -08:00
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