this project is meant to facilitate quic server performance research and to establish absolute benchmarks of performance amongst implementations.
cd quicperf && cmake -S . -B build && cmake --build build
this will create a build folder in the project directory then download and compile all dependencies and finally compile and link the binaries (lsperf, picoperf, quicheperf, ngtcp2perf, tcpperf) and copy them into the project directory
first run a server instance, then run a client instance. the binaries follow the below pattern:
./binary mode (client or server) networking (iouring or syscall) serverIpAddress (any, loopback, or ipv6)
for example...
./picoperf server syscall loopback
./picoperf client syscall loopback
the client will print the results....
root@clr-df9e289c0de04eb2a0cfc75803a0b93e~/quicperf # ./picoperf client syscall
1.804000 seconds
4.434590 Gb/s
root@clr-df9e289c0de04eb2a0cfc75803a0b93e~/quicperf # ./picoperf client iouring
2.012000 seconds
3.976143 Gb/s
- Linux only
- tcp+tls performance is 30% higher when letting boringssl manage the socket IO and BIOs than when doing so manually. suspect they might be avoiding copies.
- no GRO or GSO but will be added