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  }