Documentation ¶
Overview ¶
Package hdrhistogram provides an implementation of Gil Tene's HDR Histogram data structure. The HDR Histogram allows for fast and accurate analysis of the extreme ranges of data with non-normal distributions, like latency.
This package originated as github.com/codahale/hdrhistogram, and primarily adds features (with dependencies) to ease serialization of snapshots.
Index ¶
- type Bar
- type Bracket
- type Histogram
- func (h *Histogram) ByteSize() int
- func (h *Histogram) CumulativeDistribution() []Bracket
- func (h *Histogram) Distribution() (result []Bar)
- func (h *Histogram) Equals(other *Histogram) bool
- func (h *Histogram) Export() *Snapshot
- func (h *Histogram) GetBSON() (interface{}, error)
- func (h *Histogram) HighestTrackableValue() int64
- func (h *Histogram) LowestTrackableValue() int64
- func (h *Histogram) MarshalBSON() ([]byte, error)
- func (h *Histogram) MarshalJSON() ([]byte, error)
- func (h *Histogram) Max() int64
- func (h *Histogram) Mean() float64
- func (h *Histogram) Merge(from *Histogram) (dropped int64)
- func (h *Histogram) Min() int64
- func (h *Histogram) RecordCorrectedValue(v, expectedInterval int64) error
- func (h *Histogram) RecordValue(v int64) error
- func (h *Histogram) RecordValues(v, n int64) error
- func (h *Histogram) Reset()
- func (h *Histogram) SetBSON(raw mgobson.Raw) error
- func (h *Histogram) SignificantFigures() int64
- func (h *Histogram) StdDev() float64
- func (h *Histogram) TotalCount() int64
- func (h *Histogram) UnmarshalBSON(in []byte) error
- func (h *Histogram) UnmarshalJSON(in []byte) error
- func (h *Histogram) ValueAtQuantile(q float64) int64
- type Snapshot
- type WindowedHistogram
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Histogram ¶
type Histogram struct {
// contains filtered or unexported fields
}
A Histogram is a lossy data structure used to record the distribution of non-normally distributed data (like latency) with a high degree of accuracy and a bounded degree of precision.
func Import ¶
Import returns a new Histogram populated from the Snapshot data (which the caller must stop accessing).
func New ¶
New returns a new Histogram instance capable of tracking values in the given range and with the given amount of precision.
func (*Histogram) ByteSize ¶
ByteSize returns an estimate of the amount of memory allocated to the histogram in bytes.
N.B.: This does not take into account the overhead for slices, which are small, constant, and specific to the compiler version.
func (*Histogram) CumulativeDistribution ¶
CumulativeDistribution returns an ordered list of brackets of the distribution of recorded values.
func (*Histogram) Distribution ¶
Distribution returns an ordered list of bars of the distribution of recorded values, counts can be normalized to a probability
func (*Histogram) Export ¶
Export returns a snapshot view of the Histogram. This can be later passed to Import to construct a new Histogram with the same state.
func (*Histogram) HighestTrackableValue ¶
HighestTrackableValue returns the upper bound on values that will be added to the histogram
func (*Histogram) LowestTrackableValue ¶
LowestTrackableValue returns the lower bound on values that will be added to the histogram
func (*Histogram) MarshalBSON ¶
func (*Histogram) MarshalJSON ¶
func (*Histogram) Merge ¶
Merge merges the data stored in the given histogram with the receiver, returning the number of recorded values which had to be dropped.
func (*Histogram) RecordCorrectedValue ¶
RecordCorrectedValue records the given value, correcting for stalls in the recording process. This only works for processes which are recording values at an expected interval (e.g., doing jitter analysis). Processes which are recording ad-hoc values (e.g., latency for incoming requests) can't take advantage of this.
func (*Histogram) RecordValue ¶
RecordValue records the given value, returning an error if the value is out of range.
func (*Histogram) RecordValues ¶
RecordValues records n occurrences of the given value, returning an error if the value is out of range.
func (*Histogram) Reset ¶
func (h *Histogram) Reset()
Reset deletes all recorded values and restores the histogram to its original state.
func (*Histogram) SignificantFigures ¶
SignificantFigures returns the significant figures used to create the histogram
func (*Histogram) StdDev ¶
StdDev returns the approximate standard deviation of the recorded values.
func (*Histogram) TotalCount ¶
TotalCount returns total number of values recorded.
func (*Histogram) UnmarshalBSON ¶
func (*Histogram) UnmarshalJSON ¶
func (*Histogram) ValueAtQuantile ¶
ValueAtQuantile returns the recorded value at the given quantile (0..100).
type Snapshot ¶
type Snapshot struct { LowestTrackableValue int64 `bson:"lowest" json:"lowest" yaml:"lowest"` HighestTrackableValue int64 `bson:"highest" json:"highest" yaml:"highest"` SignificantFigures int64 `bson:"figures" json:"figures" yaml:"figures"` Counts []int64 `bson:"counts" json:"counts" yaml:"counts"` }
A Snapshot is an exported view of a Histogram, useful for serializing them. A Histogram can be constructed from it by passing it to Import.
type WindowedHistogram ¶
type WindowedHistogram struct { Current *Histogram // contains filtered or unexported fields }
A WindowedHistogram combines histograms to provide windowed statistics.
func NewWindowed ¶
func NewWindowed(n int, minValue, maxValue int64, sigfigs int) *WindowedHistogram
NewWindowed creates a new WindowedHistogram with N underlying histograms with the given parameters.
func (*WindowedHistogram) Merge ¶
func (w *WindowedHistogram) Merge() *Histogram
Merge returns a histogram which includes the recorded values from all the sections of the window.
func (*WindowedHistogram) Rotate ¶
func (w *WindowedHistogram) Rotate()
Rotate resets the oldest histogram and rotates it to be used as the current histogram.