github.com/Cloud-Foundations/Dominator@v0.3.4/lib/rateio/metrics.go (about) 1 package rateio 2 3 import ( 4 "github.com/Cloud-Foundations/tricorder/go/tricorder" 5 "github.com/Cloud-Foundations/tricorder/go/tricorder/units" 6 ) 7 8 var sleepBucketer *tricorder.Bucketer 9 10 func init() { 11 sleepBucketer = tricorder.NewGeometricBucketer(1e-3, 1e3) 12 } 13 14 func (ctx *ReaderContext) registerMetrics(dir *tricorder.DirectorySpec, 15 unit units.Unit, description string) error { 16 err := dir.RegisterMetric("speed", &ctx.maxIOPerSecond, unit, description) 17 if err != nil { 18 return err 19 } 20 err = dir.RegisterMetric("limit", &ctx.speedPercent, units.None, 21 "percent limit") 22 if err != nil { 23 return err 24 } 25 ctx.sleepTimeDistribution = sleepBucketer.NewCumulativeDistribution() 26 return dir.RegisterMetric("sleep-time", ctx.sleepTimeDistribution, 27 units.Millisecond, "sleep time") 28 }