github.com/Cloud-Foundations/Dominator@v0.3.4/lib/cpulimiter/api.go (about) 1 package cpulimiter 2 3 import ( 4 "sync" 5 "time" 6 7 "github.com/Cloud-Foundations/Dominator/lib/wsyscall" 8 ) 9 10 type CpuLimiter struct { 11 mutex sync.Mutex 12 confCpuPercent uint // Aggregate across all CPUs. 13 cpuPercent uint // For a single CPU. 14 lastProbeTime time.Time 15 lastProbeCpuTime wsyscall.Timeval 16 } 17 18 func New(cpuPercent uint) *CpuLimiter { 19 return newCpuLimiter(cpuPercent) 20 } 21 22 func (cl *CpuLimiter) Limit() error { 23 return cl.limit() 24 } 25 26 func (cl *CpuLimiter) CpuPercent() uint { 27 return cl.getConfCpuPercent() 28 } 29 30 func (cl *CpuLimiter) SetCpuPercent(cpuPercent uint) { 31 cl.setCpuPercent(cpuPercent) 32 }