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  }