Contents
Class BucketedOpStats
java.lang.Object
com.hypixel.hytale.metrics.BucketedOpStats
- All Implemented Interfaces:
MetricProvider
Per-second rolling-bucket metric for operation stats: tracks count, total bytes, and latency
(sum/min/max) per second across a fixed-size circular buffer indexed by
(nanoTime
second) % bucketCount. Stale buckets are naturally overwritten as their slot is reused. The
bucket second is derived from System.nanoTime() so it tracks JVM-uptime seconds, not
wall-clock epoch seconds.
Designed for high-rate per-operation recording where the per-sample HistoricMetric
would overflow its buffer and lose history. Over the configured periods (default 1m / 5m / 15m),
summary(long) returns aggregate stats (count, bytes, latency sum/min/max) for any
trailing window not larger than bucketCount seconds.
The hot record(long, long) path is contention-free: per-bucket LongAdder accumulators
absorb concurrent writes without locking, and bucket recycling is coordinated by a CAS on the
bucket-second slot. summary(long) reads accumulators without coordination and may briefly
observe transient values during a recycle, which is acceptable for metric output.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classSnapshot of operation stats over a single trailing period. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intDefault bucket count: 900 (15 minutes at 1-second resolution).static final long[]Default period sizes in seconds (1m / 5m / 15m).static final Codec<BucketedOpStats.PeriodView[]> Array codec forBucketedOpStats.PeriodViewarrays.static final BuilderCodec<BucketedOpStats.PeriodView> Codec forBucketedOpStats.PeriodView. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns oneBucketedOpStats.PeriodViewper configured period.voidrecord(long latencyNanos, long bytes) Records one operation that tooklatencyNanosand processedbytes.summary(long periodSec) Returns aggregated stats for the trailingperiodSecseconds.
-
Field Details
-
DEFAULT_BUCKETS
public static final int DEFAULT_BUCKETSDefault bucket count: 900 (15 minutes at 1-second resolution).- See Also:
-
DEFAULT_PERIODS_SEC
public static final long[] DEFAULT_PERIODS_SECDefault period sizes in seconds (1m / 5m / 15m). -
PERIOD_VIEW_CODEC
Codec forBucketedOpStats.PeriodView. -
PERIOD_VIEW_ARRAY_CODEC
Array codec forBucketedOpStats.PeriodViewarrays.
-
-
Constructor Details
-
BucketedOpStats
public BucketedOpStats() -
BucketedOpStats
public BucketedOpStats(int bucketCount, @Nonnull long[] periodsSec)
-
-
Method Details
-
record
public void record(long latencyNanos, long bytes) Records one operation that tooklatencyNanosand processedbytes. -
summary
Returns aggregated stats for the trailingperiodSecseconds. -
allSummaries
Returns oneBucketedOpStats.PeriodViewper configured period. -
toMetricResults
- Specified by:
toMetricResultsin interfaceMetricProvider
-