Commit Graph

51 Commits

Author SHA1 Message Date
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