On Thu, Mar 08, 2018 at 14:42:29 +0300, Vladimir Sementsov-Ogievskiy wrote: > Hi Emilio! > > Looked through qdist, if I understand correctly, it saves each added (with > different value) element. It is not effective for disk io timing - we'll > have too much elements. In my approach, histogram don't grow, it initially > have several ranges and counts hits to each range.
I thought about this use case, i.e. having a gazillion elements. You should just do some pre-binning before inserting samples into qdist, as pointed out in this comment in qdist.h: /* * Samples with the same 'x value' end up in the same qdist_entry, * e.g. inc(0.1) and inc(0.1) end up as {x=0.1, count=2}. * * Binning happens only at print time, so that we retain the flexibility to * choose the binning. This might not be ideal for workloads that do not care * much about precision and insert many samples all with different x values; * in that case, pre-binning (e.g. entering both 0.115 and 0.097 as 0.1) * should be considered. */ struct qdist_entry { double x; unsigned long count; }; Let me know if you need help with that. Thanks, Emilio