public HdrHistogram(final long highestTrackableValue, final int numberOfSignificantValueDigits) { this(new AtomicHistogram(highestTrackableValue, numberOfSignificantValueDigits)); }
@Override public void update(long value) { try { hdrHistogram.recordValue(value); } catch (ArrayIndexOutOfBoundsException e) { log.debug("Ignoring value {} for HdrHistogram, it exceeds the highest trackable value {}", value, hdrHistogram.getHighestTrackableValue()); } } }
@Override public long getMax() { return copy.getMaxValue(); }
@Override public AtomicHistogram copyCorrectedForCoordinatedOmission(final long expectedIntervalBetweenValueSamples) { AtomicHistogram toHistogram = new AtomicHistogram(this); toHistogram.addWhileCorrectingForCoordinatedOmission(this, expectedIntervalBetweenValueSamples); return toHistogram; }
@Override public AtomicHistogram copy() { AtomicHistogram copy = new AtomicHistogram(this); copy.add(this); return copy; }
public Result done() { Result result = new Result(); result.type = typeName; result.direction = direction.name(); result.total = total; result.max = histogram.getMaxValue(); result.min = histogram.getMinValue(); result.mean = histogram.getMean(); result.p50 = histogram.getValueAtPercentile(50); result.p75 = histogram.getValueAtPercentile(75); result.p90 = histogram.getValueAtPercentile(90); result.p95 = histogram.getValueAtPercentile(95); result.p99 = histogram.getValueAtPercentile(99); result.p999 = histogram.getValueAtPercentile(99.9); this.histogram.reset(); this.histogram = null; return result; } }
activeRecordingHistogram = new AtomicHistogram(lowestTrackableLatency, highestTrackableLatency, numberOfSignificantValueDigits); inactiveRawDataHistogram = new AtomicHistogram(lowestTrackableLatency, highestTrackableLatency, numberOfSignificantValueDigits); activeRecordingHistogram.setStartTimeStamp(now); activePauseCorrectionsHistogram.setStartTimeStamp(now);
public void record(long value) { histogram.recordValue(value); } public Result done() {
@Override public double getMean() { final double mean = copy.getMean(); return Double.isNaN(mean) ? 0 : mean; }
@Override public long getMin() { final long minValue = copy.getMinValue(); return minValue == Long.MAX_VALUE ? 0 : minValue; }
@Override public double getValue(double quantile) { return copy.getValueAtPercentile(quantile * 100); }
@Override public double getStdDev() { final double stdDeviation = copy.getStdDeviation(); return Double.isNaN(stdDeviation) ? 0 : stdDeviation; }
@Override public Snapshot getSnapshot() { final AtomicHistogram copy = hdrHistogram.copy(); return new Snapshot() { @Override
@Override public AtomicHistogram copyCorrectedForCoordinatedOmission(final long expectedIntervalBetweenValueSamples) { AtomicHistogram toHistogram = new AtomicHistogram(this); toHistogram.addWhileCorrectingForCoordinatedOmission(this, expectedIntervalBetweenValueSamples); return toHistogram; }
@Override public AtomicHistogram copy() { AtomicHistogram copy = new AtomicHistogram(this); copy.add(this); return copy; }
activeRecordingHistogram = new AtomicHistogram(lowestTrackableLatency, highestTrackableLatency, numberOfSignificantValueDigits); inactiveRawDataHistogram = new AtomicHistogram(lowestTrackableLatency, highestTrackableLatency, numberOfSignificantValueDigits); activeRecordingHistogram.setStartTimeStamp(now); activePauseCorrectionsHistogram.setStartTimeStamp(now);
/** * Record a latency value in the LatencyStats object * @param latency latency value (in nanoseconds) to record */ public void recordLatency(long latency) { long criticalValueAtEnter = recordingPhaser.writerCriticalSectionEnter(); try { trackRecordingInterval(); activeRecordingHistogram.recordValue(latency); } finally { recordingPhaser.writerCriticalSectionExit(criticalValueAtEnter); } }
@Override public double getMean() { final double mean = copy.getMean(); return Double.isNaN(mean) ? 0 : mean; }
@Override public long getMin() { final long minValue = copy.getMinValue(); return minValue == Long.MAX_VALUE ? 0 : minValue; }
@Override public double getValue(double quantile) { return copy.getValueAtPercentile(quantile * 100); }