This is one of my favorite research topics. I come back to it whenever
I have a bit of time (which is "almost never" right now as there are
too many more mundane things keeping me busy).
Obviously, making buckets cheaper in general, and in particular those
that aren't currently receiving any increments, would help a lot.
(That's Jack's suggestion, essentially.) I have championed that for a
while, but it needs more support throughout the ecosystem (and in
particular the support of those that are more active in development
than I currently can be).
A more involved approach would be to not represent histograms as naive
buckets but in some other way. There is a lot of research about it
(q-digest and t-digest are examples), but to my current knowledge,
they all lack certain attributes needed for the Prometheus data and
execution model, mainly concerned with the ability to express “give me
the φ-quantile over the timespan t” with arbitrary values for φ and t,
selected only after collection.
Once life and work is in a bit calmer state I hope to solidify some of
my ideas of how this can be pulled off for Prometheus and write
something up.
--
Björn Rabenstein, Engineer
http://soundcloud.com/brabenstein
SoundCloud Ltd. | Rheinsberger Str. 76/77, 10115 Berlin, Germany
Managing Director: Alexander Ljung | Incorporated in England & Wales
with Company No. 6343600 | Local Branch Office | AG Charlottenburg |
HRB 110657B