Re: [systemd-devel] Question related to cgroup and systemd

2015-09-18 Thread Francis Moreau
Hello Lennart,

On Fri, Sep 18, 2015 at 2:24 PM, Lennart Poettering
 wrote:
> 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

2015-09-18 Thread Francis Moreau
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

2015-09-18 Thread Lennart Poettering
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

2015-09-18 Thread Lennart Poettering
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