Reduce code duplication for resetting expdecaysample

Use single function for creating bounded histogram sample
This commit is contained in:
Joshua Colvin 2022-11-29 17:30:57 -07:00
parent cd0770ea68
commit 1d98eeb9d7
5 changed files with 10 additions and 12 deletions

View file

@ -218,9 +218,7 @@ func handleMessage(backend Backend, peer *Peer) error {
h := fmt.Sprintf("%s/%s/%d/%#02x", p2p.HandleHistName, ProtocolName, peer.Version(), msg.Code) h := fmt.Sprintf("%s/%s/%d/%#02x", p2p.HandleHistName, ProtocolName, peer.Version(), msg.Code)
defer func(start time.Time) { defer func(start time.Time) {
sampler := func() metrics.Sample { sampler := func() metrics.Sample {
return metrics.ResettingSample( return metrics.NewBoundedHistogramSample()
metrics.NewExpDecaySample(1028, 0.015),
)
} }
metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(time.Since(start).Microseconds()) metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(time.Since(start).Microseconds())
}(time.Now()) }(time.Now())

View file

@ -145,9 +145,7 @@ func HandleMessage(backend Backend, peer *Peer) error {
h := fmt.Sprintf("%s/%s/%d/%#02x", p2p.HandleHistName, ProtocolName, peer.Version(), msg.Code) h := fmt.Sprintf("%s/%s/%d/%#02x", p2p.HandleHistName, ProtocolName, peer.Version(), msg.Code)
defer func(start time.Time) { defer func(start time.Time) {
sampler := func() metrics.Sample { sampler := func() metrics.Sample {
return metrics.ResettingSample( return metrics.NewBoundedHistogramSample()
metrics.NewExpDecaySample(1028, 0.015),
)
} }
metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(time.Since(start).Microseconds()) metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(time.Since(start).Microseconds())
}(start) }(start)

View file

@ -32,6 +32,12 @@ type Sample interface {
Update(int64) Update(int64)
} }
func NewBoundedHistogramSample() Sample {
return ResettingSample(
NewExpDecaySample(1028, 0.015),
)
}
// ExpDecaySample is an exponentially-decaying sample using a forward-decaying // ExpDecaySample is an exponentially-decaying sample using a forward-decaying
// priority reservoir. See Cormode et al's "Forward Decay: A Practical Time // priority reservoir. See Cormode et al's "Forward Decay: A Practical Time
// Decay Model for Streaming Systems". // Decay Model for Streaming Systems".

View file

@ -197,9 +197,7 @@ func (t *Tracker) Fulfil(peer string, version uint, code uint64, id uint64) {
h := fmt.Sprintf("%s/%s/%d/%#02x", waitHistName, t.protocol, req.version, req.reqCode) h := fmt.Sprintf("%s/%s/%d/%#02x", waitHistName, t.protocol, req.version, req.reqCode)
sampler := func() metrics.Sample { sampler := func() metrics.Sample {
return metrics.ResettingSample( return metrics.NewBoundedHistogramSample()
metrics.NewExpDecaySample(1028, 0.015),
)
} }
metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(time.Since(req.time).Microseconds()) metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(time.Since(req.time).Microseconds())
} }

View file

@ -42,9 +42,7 @@ func updateServeTimeHistogram(method string, success bool, elapsed time.Duration
} }
h := fmt.Sprintf("%s/%s/%s", serveTimeHistName, method, note) h := fmt.Sprintf("%s/%s/%s", serveTimeHistName, method, note)
sampler := func() metrics.Sample { sampler := func() metrics.Sample {
return metrics.ResettingSample( return metrics.NewBoundedHistogramSample()
metrics.NewExpDecaySample(1028, 0.015),
)
} }
metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(elapsed.Nanoseconds()) metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(elapsed.Nanoseconds())
} }