-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: Statistics
-
None
-
Storage Engines - Persistence
-
60.582
-
None
-
None
Currently some (all?) of our millisecond histogram statistics have buckets defined for 0-2ms and 2-5ms. For example:
PerfHistStat('perf_hist_bmread_latency_lt2', 'block manager read latency histogram (bucket 1) - 0-1ms'),
PerfHistStat('perf_hist_bmread_latency_lt5', 'block manager read latency histogram (bucket 2) - 2-4ms'),
PerfHistStat('perf_hist_bmread_latency_lt10', 'block manager read latency histogram (bucket 3) - 5-9ms'),
But the macro that populates the msec histogram buckets doesn't populate those buckets. It puts all samples less than 10ms in the *_lt10 bucket
#define WT_STAT_MSECS_HIST_INCR_FUNC(name, stat) \
static WT_INLINE void __wt_stat_msecs_hist_incr_##name( \
WT_SESSION_IMPL *session, uint64_t msecs) \
{ \
WT_STAT_CONN_INCRV(session, stat##_total_msecs, msecs); \
if (msecs < 10)
. . .
The result is that the statistics output shows all of those data points labeled as "5-10ms". This is misleading, especially when measuring something where most of the samples would land in the lower latency buckets.
We should fix the macro to use the lower latency buckets correctly.