From 9c7bd7cd9e90091916cf99d79c06998d0d39b241 Mon Sep 17 00:00:00 2001 From: Qiang Huang Date: Fri, 14 Nov 2014 08:15:47 +0800 Subject: [PATCH 1/2] libcontainer: setup cpuset cgroup by default Currently if we don't use --cpuset, the cpuset cgroup is not created, it's bad if we want to modify cpuset config subsequently, change the behavior to make it right. Signed-off-by: Qiang Huang --- cgroups/fs/cpuset.go | 8 ++++++-- cgroups/systemd/apply_systemd.go | 10 ++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cgroups/fs/cpuset.go b/cgroups/fs/cpuset.go index 884773946..71b5588b0 100644 --- a/cgroups/fs/cpuset.go +++ b/cgroups/fs/cpuset.go @@ -46,8 +46,12 @@ func (s *CpusetGroup) SetDir(dir, value string, pid int) error { return err } - if err := writeFile(dir, "cpuset.cpus", value); err != nil { - return err + // If we don't use --cpuset, the default cpuset.cpus is set in + // s.ensureParent, otherwise, use the value we set + if value != "" { + if err := writeFile(dir, "cpuset.cpus", value); err != nil { + return err + } } return nil diff --git a/cgroups/systemd/apply_systemd.go b/cgroups/systemd/apply_systemd.go index 94f3465ff..3d8981143 100644 --- a/cgroups/systemd/apply_systemd.go +++ b/cgroups/systemd/apply_systemd.go @@ -137,16 +137,14 @@ func Apply(c *cgroups.Cgroup, pid int) (map[string]string, error) { } - // we need to manually join the freezer cgroup in systemd because it does not currently support it - // via the dbus api + // we need to manually join the freezer and cpuset cgroup in systemd + // because it does not currently support it via the dbus api. if err := joinFreezer(c, pid); err != nil { return nil, err } - if c.CpusetCpus != "" { - if err := joinCpuset(c, pid); err != nil { - return nil, err - } + if err := joinCpuset(c, pid); err != nil { + return nil, err } paths := make(map[string]string) From 75093be3c94c40eb0e40d0dec7bde2a42692e3ed Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Mon, 17 Nov 2014 19:05:58 -0800 Subject: [PATCH 2/2] Always join fs.Cpuset reguardless of value Signed-off-by: Michael Crosby --- cgroups/fs/cpuset.go | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/cgroups/fs/cpuset.go b/cgroups/fs/cpuset.go index 71b5588b0..54d2ed572 100644 --- a/cgroups/fs/cpuset.go +++ b/cgroups/fs/cpuset.go @@ -14,17 +14,11 @@ type CpusetGroup struct { } func (s *CpusetGroup) Set(d *data) error { - // we don't want to join this cgroup unless it is specified - if d.c.CpusetCpus != "" { - dir, err := d.path("cpuset") - if err != nil { - return err - } - - return s.SetDir(dir, d.c.CpusetCpus, d.pid) + dir, err := d.path("cpuset") + if err != nil { + return err } - - return nil + return s.SetDir(dir, d.c.CpusetCpus, d.pid) } func (s *CpusetGroup) Remove(d *data) error {