The picoquicdemo program supports multiple applications, one of which is “quic perf” defined by Nick Banks in this draft. To quote from the draft, The QUIC performance protocol provides a simple, general-purpose protocol for testing the performance characteristics of a QUIC implementation.
To run the “perf” protocol and run a basic test scenario, do:
.\picoquicdemo -a perf test.privateoctopus.com 4433 "*1:0:-:397:5000000;"
Where -a perf
means set ALPN to “perf”, and use the quicperf protocol to reach the server
and the quoted argument describes a test scenario, in which:
-
means start immediately (a number would mean, start when stream N download is complete)The program can run multiple test scenarios in a single session, e.g.:
"*1:0:-:397:5000;*1:4:0:432:4999;"
which will do one transaction on stream 0, then start another one on stream 4 once stream 0 completes.
When used as a client, the program will display statistics, e.g.:
Connection_duration_sec: 4.425348
Nb_transactions: 10000
Upload_bytes: 1000000
Download_bytes: 1000000
TPS: 2259.709293
Upload_Mbps: 1.807767
Download_Mbps: 1.807767
For more detailed statistics, or for gathering statistics on servers, picoquicdemo
can provide performance logs, see .
There are lots of other arguments in picoquicdemo
, but you probably don’t need them for
running quicperf, although you may consider collecting quic logs using the -q
option when
debugging. Also, the “-h”
option will produce a list of command line arguments.
.\picoquicdemo -h
When doing performance measurements, the natural instinct is to turn off all logging, because writing logs slows down the program execution. On the other hand, it is very useful to have at least some logging, in order to understand what changes from run to run, and what might affected performance. The performance logs are designed to minimize the interference. The data is written to disk at the end of the connection. If the performance test involves multiple simultaneous connections, the server will keep the data in memory and write it to disk when all connections are complete.
To produce the performance logs with picoquicdemo
, use the argument -F
as in:
.\picoquicdemo -k key.pem -c cert.pem -p 4433 -F server_log.csv
.\picoquicdemo -q client_log.csv -a perf test.privateoctopus.com 4433 "*1:0:-:397:5000000;"
The performance logs are formatted as CSV file, with the following columns: