diff options
author | Matthew Heon <matthew.heon@gmail.com> | 2018-03-21 11:28:16 -0400 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-05-11 14:43:57 +0000 |
commit | df83d361e4fe3c1fc1939b096cb21aa2e7ec3d74 (patch) | |
tree | 3f4bb6dba3763a5895135fadecc005eeb0ea96ca /libpod/oci.go | |
parent | fee9ec18584bcc31ce4889bdbda2fc2a829eaf5f (diff) | |
download | podman-df83d361e4fe3c1fc1939b096cb21aa2e7ec3d74.tar.gz podman-df83d361e4fe3c1fc1939b096cb21aa2e7ec3d74.tar.bz2 podman-df83d361e4fe3c1fc1939b096cb21aa2e7ec3d74.zip |
Major fixes to systemd cgroup handling
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
Closes: #507
Approved by: baude
Diffstat (limited to 'libpod/oci.go')
-rw-r--r-- | libpod/oci.go | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/libpod/oci.go b/libpod/oci.go index a07aa8d86..e1df807cd 100644 --- a/libpod/oci.go +++ b/libpod/oci.go @@ -321,19 +321,26 @@ func (r *OCIRuntime) createOCIContainer(ctr *Container, cgroupParent string) (er // Move conmon to specified cgroup if r.cgroupManager == SystemdCgroupsManager { - logrus.Infof("Running conmon under slice %s and unitName %s", cgroupParent, createUnitName("libpod-conmon", ctr.ID())) - if err = utils.RunUnderSystemdScope(cmd.Process.Pid, cgroupParent, createUnitName("libpod-conmon", ctr.ID())); err != nil { + unitName := createUnitName("libpod", ctr.ID()) + + logrus.Infof("Running conmon under slice %s and unitName %s", cgroupParent, unitName) + if err = utils.RunUnderSystemdScope(cmd.Process.Pid, cgroupParent, unitName); err != nil { logrus.Warnf("Failed to add conmon to systemd sandbox cgroup: %v", err) } } else { - control, err := cgroups.New(cgroups.V1, cgroups.StaticPath(filepath.Join(cgroupParent, "/libpod-conmon-"+ctr.ID())), &spec.LinuxResources{}) + cgroupPath, err := ctr.CGroupPath() if err != nil { - logrus.Warnf("Failed to add conmon to cgroupfs sandbox cgroup: %v", err) + logrus.Errorf("Failed to generate CGroup path for conmon: %v", err) } else { - // we need to remove this defer and delete the cgroup once conmon exits - // maybe need a conmon monitor? - if err := control.Add(cgroups.Process{Pid: cmd.Process.Pid}); err != nil { + control, err := cgroups.New(cgroups.V1, cgroups.StaticPath(cgroupPath), &spec.LinuxResources{}) + if err != nil { logrus.Warnf("Failed to add conmon to cgroupfs sandbox cgroup: %v", err) + } else { + // we need to remove this defer and delete the cgroup once conmon exits + // maybe need a conmon monitor? + if err := control.Add(cgroups.Process{Pid: cmd.Process.Pid}); err != nil { + logrus.Warnf("Failed to add conmon to cgroupfs sandbox cgroup: %v", err) + } } } } |