diff --git a/cgroups/cgroups.go b/cgroups/cgroups.go index 3aac971..9a49860 100644 --- a/cgroups/cgroups.go +++ b/cgroups/cgroups.go @@ -16,6 +16,8 @@ type Cgroup struct { Memory int64 `json:"memory,omitempty"` // Memory limit (in bytes) MemorySwap int64 `json:"memory_swap,omitempty"` // Total memory usage (memory + swap); set `-1' to disable swap CpuShares int64 `json:"cpu_shares,omitempty"` // CPU shares (relative weight vs. other containers) + CpuQuota int64 `json:"cpu_quota,omitempty"` // CPU hardcap limit (in usecs). Allowed cpu time in a given period. + CpuPeriod int64 `json:"cpu_period,omitempty"` // CPU period to be used for hardcapping (in usecs). 0 to use system default. CpusetCpus string `json:"cpuset_cpus,omitempty"` // CPU to use UnitProperties [][2]string `json:"unit_properties,omitempty"` // systemd unit properties diff --git a/cgroups/fs/cpu.go b/cgroups/fs/cpu.go index 8eb0c4f..2664811 100644 --- a/cgroups/fs/cpu.go +++ b/cgroups/fs/cpu.go @@ -19,6 +19,16 @@ func (s *cpuGroup) Set(d *data) error { return err } } + if d.c.CpuPeriod != 0 { + if err := writeFile(dir, "cpu.cfs_period_us", strconv.FormatInt(d.c.CpuPeriod, 10)); err != nil { + return err + } + } + if d.c.CpuQuota != 0 { + if err := writeFile(dir, "cpu.cfs_quota_us", strconv.FormatInt(d.c.CpuQuota, 10)); err != nil { + return err + } + } return nil }