2018-10-28 17:07:30 +01:00

46 lines
865 B
Go

package main
import (
"context"
"github.com/sirupsen/logrus"
"math"
"sync/atomic"
"time"
)
var totalStarted uint64
var totalDone uint64
var totalRetries uint64
var totalAborted uint64
func Stats(c context.Context) {
var startedLast uint64 = 0
ticker := time.NewTicker(config.StatsInterval).C
for {
select {
case <-ticker:
startedNow := atomic.LoadUint64(&totalStarted)
perSecond := float64(startedNow - startedLast) /
config.StatsInterval.Seconds()
// Round to .5
perSecond *= 2
perSecond = math.Round(perSecond)
perSecond /= 2
logrus.WithFields(logrus.Fields{
"per_second": perSecond,
"done": atomic.LoadUint64(&totalDone),
"retries": atomic.LoadUint64(&totalRetries),
"aborted": atomic.LoadUint64(&totalAborted),
}).Info("Stats")
startedLast = startedNow
case <-c.Done():
return
}
}
}