Add bandwidth graph with median, quartiles, and lowest bandwidth within 1.5 IQR of lower quartile
We have been asked to add graphs on (nearly) worst-case performance of our OnionPerf measurements, in addition to the average-case performance graphs we already have. In particular, we were asked to plot latency and bandwidth numbers. This ticket is about bandwidth numbers. It's based on team-internal discussions in Brussels and follow-up discussions.
With OnionPerf we measure download times for 50 KiB/1 MiB/5 MiB files that we download from our own public web server or onion server. We could use our
DATAPERC* timestamps to extract how long it takes to download a specific part of our files and use that to compute average bandwidth.
We'd like to exclude the transfer start with all the circuit establishment and TCP slow start stuff and only focus on the parts when things have stabilized. More precisely, we could look at the 5 MiB downloads and consider only the time between finishing 2.5 MiB of it as well as the full 5 MiB. Or we could look at the time between downloading 0.5 MiB to 1 MiB that we have data for from our 1 MiB and 5 MiB downloads.
The ask was to plot nearly worst-case bandwidth. So, my guess is that we shouldn't plot the minimum, because we'd only be looking at outliers, but instead the 1st or 5th or 10th percentile. Let's maybe start with the 1st percentile.
I'm attaching two graphs for the public server case and the onion server case. They both show the respective 1st percentile bandwidth of successful 1 MiB and 5 MiB downloads on a given day.
The coding and deployment effort for bringing this graph on the Tor Metrics website would be comparatively small, because we already have all required data in the database. However, I'm not attaching a patch yet, because I'd first want to discuss the general idea of having such a graph.