[QUESTION] Cgroup namespace and cgroup v2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am in the process of adding automated cgroup v2 testing to
libcgroup and ran into an unsatisfactory user experience when
using cgroup v2 and cgroup namespaces.

I used lxc to create a container on a cgroup v2 system.  lxc
uses cgroup namespaces to remap /sys/fs/cgroup/mycontainer/ on
the host to /sys/fs/cgroup/ within the container.  Within the
container, I then created a cgroup - /sys/fs/cgroup/MyCgroup/ and
placed a long-running process in it.  (Note that as part of the
container creation, there are other cgroups in /sys/fs/cgroup/.)

I then used cgdelete to recursively delete the MyCgroup/ folder.
In recursive mode, cgdelete will move processes from a child
cgroup to its parent.  But this fails on a cgroup v2 system in a
cgroup namespace because the root cgroup is a non-leaf cgroup.

A couple questions/thoughts:

* As outlined above, the behavior of the "root" cgroup in a cgroup
  namespace on a v2 system differs from the behavior of the
  unnamespaced root cgroup.  At best this is inconsistent; at worst,
  this may leak information to an unethical program.  Any ideas how
  we can make the behavior more consistent for the user and
  libcgroup?

* I will likely add a flag to cgdelete to simply kill processes in
  a cgroup rather than try and move them to the parent cgroup.
  Moving processes to the parent cgroup is somewhat challenging
  even in a cgroup v1 system due to permissions, etc.

tl;dr - I can't move a process to the root cgroup within a cgroup
        v2 cgroup namespace because its "root" is a non-leaf cgroup

Thanks.

Tom




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [Monitors]

  Powered by Linux