cgroups: add support for cpuset.mems
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
This commit is contained in:
parent
6ffd59a784
commit
e3b14402eb
|
@ -50,6 +50,7 @@ type Cgroup struct {
|
||||||
CpuQuota int64 `json:"cpu_quota,omitempty"` // CPU hardcap limit (in usecs). Allowed cpu time in a given period.
|
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.
|
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
|
CpusetCpus string `json:"cpuset_cpus,omitempty"` // CPU to use
|
||||||
|
CpusetMems string `json:"cpuset_mems,omitempty"` // MEM to use
|
||||||
Freezer FreezerState `json:"freezer,omitempty"` // set the freeze value for the process
|
Freezer FreezerState `json:"freezer,omitempty"` // set the freeze value for the process
|
||||||
Slice string `json:"slice,omitempty"` // Parent slice to use for systemd
|
Slice string `json:"slice,omitempty"` // Parent slice to use for systemd
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ func (s *CpusetGroup) Set(d *data) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return s.SetDir(dir, d.c.CpusetCpus, d.pid)
|
return s.SetDir(dir, d.c.CpusetCpus, d.c.CpusetMems, d.pid)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *CpusetGroup) Remove(d *data) error {
|
func (s *CpusetGroup) Remove(d *data) error {
|
||||||
|
@ -29,7 +29,7 @@ func (s *CpusetGroup) GetStats(path string, stats *cgroups.Stats) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *CpusetGroup) SetDir(dir, value string, pid int) error {
|
func (s *CpusetGroup) SetDir(dir, cpus string, mems string, pid int) error {
|
||||||
if err := s.ensureParent(dir); err != nil {
|
if err := s.ensureParent(dir); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -40,10 +40,15 @@ func (s *CpusetGroup) SetDir(dir, value string, pid int) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we don't use --cpuset, the default cpuset.cpus is set in
|
// If we don't use --cpuset-xxx, the default value inherit from parent cgroup
|
||||||
// s.ensureParent, otherwise, use the value we set
|
// is set in s.ensureParent, otherwise, use the value we set
|
||||||
if value != "" {
|
if cpus != "" {
|
||||||
if err := writeFile(dir, "cpuset.cpus", value); err != nil {
|
if err := writeFile(dir, "cpuset.cpus", cpus); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if mems != "" {
|
||||||
|
if err := writeFile(dir, "cpuset.mems", mems); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,5 +313,5 @@ func joinCpuset(c *cgroups.Cgroup, pid int) error {
|
||||||
|
|
||||||
s := &fs.CpusetGroup{}
|
s := &fs.CpusetGroup{}
|
||||||
|
|
||||||
return s.SetDir(path, c.CpusetCpus, pid)
|
return s.SetDir(path, c.CpusetCpus, c.CpusetMems, pid)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue