Add percentiles of bridge descriptor downloads by fingerprint to served-descs-stats

Sebastian and I discussed Tonga's statistics about served bridge descriptors:

served-descs-stats-end 2011-10-23 23:03:31 (86400 s) total=515010 unique=3766

We suspect that Tonga also serves and counts relay descriptors here. There are only 1665 unique bridge fingerprints in descriptors published since 2011-10-20, so these can't just be bridge descriptors. Also, the total number of 515K descriptor fetches is much higher than expected.

Sebastian works on a patch to exclude fetches for relay descriptors to only count bridge descriptors. But we wonder if two numbers are enough to explain what's going on.

I suggest to include a few percentiles of downloaded descriptors per unique bridge fingerprint in the statistics. The output could be (example data):

served-descs-stats-end 2011-10-23 23:03:31 (86400 s) total=515010 unique=3766 max=12095 q3=1752 md=498 q1=112 min=5

There are two necessary changes to the implementation:

  1. The digestmap needs to store a pointer to an integer counting the downloaded descriptors by bridge fingerprint.

  2. When formatting the server descriptor stats, we need to add all counters to a (smart?)list, sort the list, and write list[0], list[length/4], list[length/2], list[3*length/4], and list[length-1] to the output string.