Looks like your Ubuntu version is using the "hybrid" cgroup mode by
default. Cgroup v2 is indeed *enabled* in your kernel, but not necessarily
*in use* – in the hybrid mode, systemd still mounts all resource
controllers (cpu, memory, etc.) in v1 mode and only sets up its own process
tracking in the v2 tree. See `findmnt`.

You could boot with the systemd.unified_cgroup_hierarchy=1 kernel option to
switch everything to cgroups v2, but if you're using container software
(docker, podman) make sure those are cgroups v2-compatible.

On Sun, Jul 4, 2021 at 10:36 AM Debraj Manna <subharaj.ma...@gmail.com>
wrote:

> Hi
>
> I am trying to restrict the swap usage of a process using MemorySwapMax as
> mentioned in the doc
> <http://manpages.ubuntu.com/manpages/bionic/man5/systemd.resource-control.5.html>
>  with
> Ubuntu 18.04.
>
> Environment
> ------------
>
> ubuntu@vrni-platform:/usr/lib/systemd/system$ uname -a
> Linux vrni-platform 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 
> UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
>
> ubuntu@vrni-platform:/usr/lib/systemd/system$ systemctl --version
> systemd 237
> +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
> +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN 
> -PCRE2 default-hierarchy=hybrid
>
> My systemd unit file looks like below
>
> [Unit]
> Description=My service
> After=network.target
> StartLimitIntervalSec=0
> [Service]
> Type=simple
> Restart=always
> RestartSec=1
> User=support
> MemoryMax=2000M
> KillMode=process
> MemoryAccounting=true
> OOMScoreAdjust=1000
> MemorySwapMax=1M
> ExecStart=/usr/bin/java -cp /home/support -XX:NativeMemoryTracking=summary 
> -Xmx10000m MemoryConsumer 100 200 1
>
> MemoryMax is working as expected but MemorySwapMax seems to be not taking 
> effect and I am seeing the process, MemoryConsumer still using swap more than 
> the one specified in MemorySwapMax,
>
> MemorySwapMax documentation states "This setting is supported only if the 
> unified control group hierarchy is used and disables MemoryLimit=."
>
> As mentioned here <https://unix.stackexchange.com/a/471495/364181> I can see 
> cgroup v2 enabled on my setup.
>
> ubuntu@vrni-platform:/tmp/tuk$ sudo mount -t cgroup2 none /tmp/tuk
> ubuntu@vrni-platform:/tmp/tuk$ ls -l /tmp/tuk/
> total 0
> -r--r--r--  1 root root 0 Jul  2 17:13 cgroup.controllers
> -rw-r--r--  1 root root 0 Jul  2 17:13 cgroup.max.depth
> -rw-r--r--  1 root root 0 Jul  2 17:13 cgroup.max.descendants
> -rw-r--r--  1 root root 0 Jun 30 14:42 cgroup.procs
> -r--r--r--  1 root root 0 Jul  2 17:13 cgroup.stat
> -rw-r--r--  1 root root 0 Jul  2 17:13 cgroup.subtree_control
> -rw-r--r--  1 root root 0 Jul  2 17:13 cgroup.threads
> drwxr-xr-x  2 root root 0 Jun 30 14:42 init.scope
> drwxr-xr-x 87 root root 0 Jul  2 15:05 system.slice
> drwxr-xr-x  7 root root 0 Jun 30 15:22 user.slice
> ubuntu@vrni-platform:/tmp/debraj$ sudo umount /tmp/tuk
>
> Can someone suggest what configuration I am missing?
>
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/systemd-devel
>


-- 
Mantas Mikulėnas
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to