On Mon, Mar 14, 2016 at 6:42 PM, Daniel J Walsh <dwa...@redhat.com> wrote:
>> To see the code you can refer to
>> https://github.com/projectatomic/docker/pull/71/files (In this PR, I made
>> the change to always join all the subsystems after creating the scope to
>> help with first issue below).

Why do you touch cgroup hierarchies which systemd manages? This is not
supported. I think you should consider applying following patch,

@@ -375,7 +375,7 @@ func setKernelMemory(c *configs.Cgroup) error {
 func joinCgroups(c *configs.Cgroup, pid int) error {
        for name, sys := range subsystems {
                switch name {
-               case "name=systemd":
+               case "name=systemd", "devices", "memory", "cpu",
"cpuacct", "blkio":
                        // let systemd handle this
                        break
                case "cpuset":


>> There are two classes of issues that are cropping up (especially under
>> load):
>> 1. Sometimes a cgroup isn't joined even though it is passed as a property
>> while creating a Transient Unit. For e.g. CPUShares are specified, however
>> the transient unit doesn't seem to join
>> the cpu,cpuacct subsystem.

This is probably a bug.

>> 2. cpu.proc file itself goes missing especitally with the devices
>> subsystemd even thought we mkdir the directory and write to the file. It is
>> as if the file gets deleted by some other process.

We had similar problem in the past with libvirtd and it got solved by
introducing Delegate option (man systemd.resource-control). Setting
Delegate=yes for unit will cause that cgroup hierarchy for this unit
will be created in all controllers. Then you can manage cgroup
settings for controllers not managed by systemd.

Michal
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to