From df33612cdfe9642e1f415e38cc742cf9d90d3d77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Cybulski?= Date: Tue, 5 May 2026 12:16:48 +0200 Subject: [PATCH] hdrhistogram: adjust reported values to be in nanoseconds Originally YCSB emited hdr histograms in microseconds. sct consumes those expecting nanoseconds, so we adjust to be in line. --- .../measurements/OneMeasurementHdrHistogram.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/site/ycsb/measurements/OneMeasurementHdrHistogram.java b/core/src/main/java/site/ycsb/measurements/OneMeasurementHdrHistogram.java index 4146ab07c9..3e98d66b44 100644 --- a/core/src/main/java/site/ycsb/measurements/OneMeasurementHdrHistogram.java +++ b/core/src/main/java/site/ycsb/measurements/OneMeasurementHdrHistogram.java @@ -111,7 +111,8 @@ public OneMeasurementHdrHistogram(String name, Properties props) { * Using {@link Recorder} to support concurrent updates to histogram. */ public void measure(long latencyInMicros) { - histogram.recordValue(latencyInMicros); + // sct consumes hdr histograms expecting those to be in nanoseconds, so we adjust here. + histogram.recordValue(latencyInMicros * 1000); } /** @@ -130,13 +131,14 @@ public void exportMeasurements(MeasurementsExporter exporter) throws IOException log.close(); } exporter.write(getName(), "Operations", totalHistogram.getTotalCount()); - exporter.write(getName(), "AverageLatency(us)", totalHistogram.getMean()); - exporter.write(getName(), "MinLatency(us)", totalHistogram.getMinValue()); - exporter.write(getName(), "MaxLatency(us)", totalHistogram.getMaxValue()); + // We need to divide by 1000 to convert back to micros for reporting, since we multiplied by 1000 when recording to convert from micros to nanos. + exporter.write(getName(), "AverageLatency(us)", totalHistogram.getMean() / 1000); + exporter.write(getName(), "MinLatency(us)", totalHistogram.getMinValue() / 1000); + exporter.write(getName(), "MaxLatency(us)", totalHistogram.getMaxValue() / 1000); for (Double percentile : percentiles) { exporter.write(getName(), ordinal(percentile) + "PercentileLatency(us)", - totalHistogram.getValueAtPercentile(percentile)); + totalHistogram.getValueAtPercentile(percentile) / 1000); } exportStatusCounts(exporter);