les: quick and dirty workaround for mclock leaps

This commit is contained in:
Zsolt Felfoldi 2019-09-12 14:51:56 +02:00
parent e331baa7cc
commit 5bdd98b674
2 changed files with 21 additions and 1 deletions

View file

@ -269,10 +269,29 @@ func (ct *costTracker) gfLoop() {
log.Debug("global cost factor saved", "value", factor)
}
saveTicker := time.NewTicker(time.Minute * 10)
mclockTicker := time.NewTicker(time.Millisecond * 100)
lastClock := mclock.Now()
noUpdate := lastClock
for {
select {
case <-mclockTicker.C:
now := mclock.Now()
dt := time.Duration(now - lastClock)
lastClock = now
mclockTimer.Update(dt)
if dt > time.Millisecond*300 {
noUpdate = now + mclock.AbsTime(time.Second*5)
}
case r := <-ct.reqInfoCh:
now := mclock.Now()
if time.Duration(now-lastClock) > time.Millisecond*300 {
noUpdate = now + mclock.AbsTime(time.Second*5)
}
if now < noUpdate {
continue
}
relCost := int64(factor * r.servingTime * 100 / r.avgTimeCost) // Convert the value to a percentage form
// Record more metrics if we are debugging
@ -311,7 +330,6 @@ func (ct *costTracker) gfLoop() {
requestEstimatedTimer.Update(time.Duration(r.avgTimeCost / factor))
relativeCostHistogram.Update(relCost)
now := mclock.Now()
dt := float64(now - expUpdate)
expUpdate = now
exp := math.Exp(-dt / float64(gfUsageTC))

View file

@ -83,6 +83,8 @@ var (
relativeCostSendTxHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/sendtx", nil, metrics.NewExpDecaySample(1028, 0.015))
relativeCostTxStatusHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/txstatus", nil, metrics.NewExpDecaySample(1028, 0.015))
mclockTimer = metrics.NewRegisteredTimer("les/server/mclock", nil)
recentServedGauge = metrics.NewRegisteredGauge("les/server/recentRequestServed", nil)
recentEstimatedGauge = metrics.NewRegisteredGauge("les/server/recentRequestEstimated", nil)
sqServedGauge = metrics.NewRegisteredGauge("les/server/servingQueue/served", nil)