On 2017년 11월 13일 09:53, Kai Krakow wrote: > Am Sun, 12 Nov 2017 18:14:38 +0100 > schrieb Stefan Schweter <ste...@schweter.it>: > >> Hi systemd-users, >> >> I tried to add a memory limit for a user service unit (inspired by >> [1]), it looks like: >> >> [Service] >> # .... >> MemoryAccounting=true >> MemoryLimit=1G >> >> Now the problem is that the (user) service consumes more than 1G >> without being terminated. > > As far as I could see, this limits the amount of RAM occupied. It > doesn't stop the memory from being swapped out. You need to limit swap > memory, too. Take note that swap accounting may have noticeable > overheads and as such is not enabled by default on many systems. > By this reason, MemorySwapMax= option is introduced.
https://github.com/systemd/systemd/pull/3659 Note, MemorySwapLimit= does not exist. Lennard does not want to add more options for legacy cgroup. Further, the swap limit operations different between legacy and unified cgroup. So adding MemorySwapLimit= was not good idea. > >> htop shows a memory consumption of 1.4 GB. The output of >> `systemd-cgtop` is: >> >> Control Group Tasks %CPU Memory >> Input/s Output/s >> / - 1.5 >> 1.7G - >> >> /user.slice 46 0.4 >> 14.3M - >> >> /user.slice/user-1001.slice 46 0.4 >> 14.2M - >> >> /init.scope 1 - >> 1.4M - >> >> /system.slice >> >> >> So my question is how would MemoryLimit= work for a user unit? > > Maybe you want to apply the limit to a slice? Your output of cgtop > doesn't show any service units... > > _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/systemd-devel