mirror of
https://github.com/containers/podman.git
synced 2025-08-06 03:19:52 +08:00
Centralize cores and period/quota conversion code
Signed-off-by: Jordan Christiansen <xordspar0@gmail.com>
This commit is contained in:
@ -653,3 +653,26 @@ func CreateCidFile(cidfile string, id string) error {
|
||||
cidFile.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// DefaultCPUPeriod is the default CPU period is 100us, which is the same default
|
||||
// as Kubernetes.
|
||||
const DefaultCPUPeriod uint64 = 100000
|
||||
|
||||
// CoresToPeriodAndQuota converts a fraction of cores to the equivalent
|
||||
// Completely Fair Scheduler (CFS) parameters period and quota.
|
||||
//
|
||||
// Cores is a fraction of the CFS period that a container may use. Period and
|
||||
// Quota are in microseconds.
|
||||
func CoresToPeriodAndQuota(cores float64) (uint64, int64) {
|
||||
return DefaultCPUPeriod, int64(cores * float64(DefaultCPUPeriod))
|
||||
}
|
||||
|
||||
// PeriodAndQuotaToCores takes the CFS parameters period and quota and returns
|
||||
// a fraction that represents the limit to the number of cores that can be
|
||||
// utilized over the scheduling period.
|
||||
//
|
||||
// Cores is a fraction of the CFS period that a container may use. Period and
|
||||
// Quota are in microseconds.
|
||||
func PeriodAndQuotaToCores(period uint64, quota int64) float64 {
|
||||
return float64(quota) / float64(period)
|
||||
}
|
||||
|
Reference in New Issue
Block a user