Re: [systemd-devel] Question related to cgroup and systemd
Hello Lennart, On Fri, Sep 18, 2015 at 2:24 PM, Lennart Poetteringwrote: > B1;4002;0cOn Fri, 18.09.15 14:11, Francis Moreau (francis.m...@gmail.com) > wrote: > >> Hi, >> >> I'm trying to understand how cgroup is used by systemd and having the >> following behaviour that I don't understand. >> >> I've created a slice "myslice.slice" with this resource constraint >> "MemoryLimit=1024" and started it. >> >> I was expecting to find a trace of myslice in /sys/fs/cgroup/memory >> folder but I can't find anything. > > systemd realizes croups only when we add processes to it. > >> I put a process inside the slice (with the help of systemd-run >> --slice=myslice), but nothing was created under /sys/fs/cgroup/memory >> either. > > So, this works fine for me: > > # systemd-run --slice=my-deep-slice.slice -p MemoryLimit=3G /bin/sleep 9 > > It creates the specified slice, and places the new service in it, then > adds the process in it and sets the memory.limit_in_bytes= attribute > on the services' cgroup. > > Does this not work for you? I dont think so: $ cat ~/.config/systemd/user/myslice.slice [Slice] MemoryLimit=1024 $ systemctl --user start myslice.slice $ systemctl --user status myslice.slice ● myslice.slice Loaded: loaded (/home/fmoreau/.config/systemd/user/myslice.slice; static; vendor preset: enabled) Active: active since Fri 2015-09-18 14:35:59 CEST; 4s ago Sep 18 14:35:59 cyclone systemd[752]: Created slice myslice.slice. $ systemd-run --user --slice=myslice.slice /bin/sleep 9 Running as unit run-793.service. $ systemctl --user status myslice.slice ● myslice.slice Loaded: loaded (/home/fmoreau/.config/systemd/user/myslice.slice; static; vendor preset: enabled) Active: active since Fri 2015-09-18 14:35:59 CEST; 1min 29s ago CGroup: /user.slice/user-1000.slice/user@1000.service/myslice.slice └─run-793.service └─794 /bin/sleep 9 Sep 18 14:35:59 cyclone systemd[752]: Created slice myslice.slice. $ find /sys/fs/cgroup/memory/ -name myslice\* $ $ find /sys/fs/cgroup/systemd/ -name myslice\* /sys/fs/cgroup/systemd/user.slice/user-1000.slice/user@1000.service/myslice.slice > Which systemd version are you using? systemd 225-1 (Archlinux). >> I was expecting that "myslice.slice" would have its own directory >> inside /sys/fs/cgroup/memory directory (ie inside the memory >> controller) and the memory constraint applied to that directory and >> hence all its children. > > Correct. But again, we only realize groups when we really need to. > Ok understood. >> But it seems I'm missing something. >> >> Could anybody enlight me please ? >> >> Also I'm a bit lost regarding kernel cgroup and its reworked API. Does >> systemd already use this new API or is it still using the old/broken >> one ? > > Yes, the concept of scopes, services and slices and how they are > mapped to cgroupfs is fully implemented. We currently don't expose all > controllers and all settings, but that's mostly because the > controllers are awful and in progress of being fixed, and we only want > to expose them as soon as they are cleaned up and here to stay with > their new settings. > > In the most recent systemd release we even support the new kernel > unified hierarchy now, but you have to select at boot time which one > you want: the legacy one as before, or the unified one. > Which kernel version starts to support the new unified hierarchy ? Is there a doc which explain it ? Thanks. -- Francis ___ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel
[systemd-devel] Question related to cgroup and systemd
Hi, I'm trying to understand how cgroup is used by systemd and having the following behaviour that I don't understand. I've created a slice "myslice.slice" with this resource constraint "MemoryLimit=1024" and started it. I was expecting to find a trace of myslice in /sys/fs/cgroup/memory folder but I can't find anything. I put a process inside the slice (with the help of systemd-run --slice=myslice), but nothing was created under /sys/fs/cgroup/memory either. I was expecting that "myslice.slice" would have its own directory inside /sys/fs/cgroup/memory directory (ie inside the memory controller) and the memory constraint applied to that directory and hence all its children. But it seems I'm missing something. Could anybody enlight me please ? Also I'm a bit lost regarding kernel cgroup and its reworked API. Does systemd already use this new API or is it still using the old/broken one ? Thanks. -- Francis ___ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel
Re: [systemd-devel] Question related to cgroup and systemd
B1;4002;0cOn Fri, 18.09.15 14:11, Francis Moreau (francis.m...@gmail.com) wrote: > Hi, > > I'm trying to understand how cgroup is used by systemd and having the > following behaviour that I don't understand. > > I've created a slice "myslice.slice" with this resource constraint > "MemoryLimit=1024" and started it. > > I was expecting to find a trace of myslice in /sys/fs/cgroup/memory > folder but I can't find anything. systemd realizes croups only when we add processes to it. > I put a process inside the slice (with the help of systemd-run > --slice=myslice), but nothing was created under /sys/fs/cgroup/memory > either. So, this works fine for me: # systemd-run --slice=my-deep-slice.slice -p MemoryLimit=3G /bin/sleep 9 It creates the specified slice, and places the new service in it, then adds the process in it and sets the memory.limit_in_bytes= attribute on the services' cgroup. Does this not work for you? Which systemd version are you using? > I was expecting that "myslice.slice" would have its own directory > inside /sys/fs/cgroup/memory directory (ie inside the memory > controller) and the memory constraint applied to that directory and > hence all its children. Correct. But again, we only realize groups when we really need to. > But it seems I'm missing something. > > Could anybody enlight me please ? > > Also I'm a bit lost regarding kernel cgroup and its reworked API. Does > systemd already use this new API or is it still using the old/broken > one ? Yes, the concept of scopes, services and slices and how they are mapped to cgroupfs is fully implemented. We currently don't expose all controllers and all settings, but that's mostly because the controllers are awful and in progress of being fixed, and we only want to expose them as soon as they are cleaned up and here to stay with their new settings. In the most recent systemd release we even support the new kernel unified hierarchy now, but you have to select at boot time which one you want: the legacy one as before, or the unified one. Lennart -- Lennart Poettering, Red Hat ___ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel
Re: [systemd-devel] Question related to cgroup and systemd
On Fri, 18.09.15 14:45, Francis Moreau (francis.m...@gmail.com) wrote: > > # systemd-run --slice=my-deep-slice.slice -p MemoryLimit=3G /bin/sleep 9 > > > > It creates the specified slice, and places the new service in it, then > > adds the process in it and sets the memory.limit_in_bytes= attribute > > on the services' cgroup. > > > > Does this not work for you? > > I dont think so: > > $ cat ~/.config/systemd/user/myslice.slice Controller access is not permitted for --user instances of systemd if the legacy hierarchy is used, as that's not deemed safe by the kernel guys. If you use the unified hierarchy this is opened up, as it is safe then. systemd --system instances get access to controllers in any case. > Which kernel version starts to support the new unified hierarchy ? Is > there a doc which explain it ? See NEWS. Lennart -- Lennart Poettering, Red Hat ___ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel