I'm trying to use the systemd infrastructure to kill my memory leaking service when its memory usage reaches some value. The configuration file used is this:
[Unit]
Description="Start memory gobbler"
After=network.target
MemoryAccounting=true
MemoryHigh=1024K
MemoryMax=4096K
[Service]
ExecStart=/data/memgoble 8388600
systemd
version is 237.
However, no matter what I set in the MemoryMax
the kernel would kill the process on its own terms, usually when its memory consumption reaches almost the entire physical RAM. I'm running this on an embedded system with no swap.
Anyone sees an obvious error in the configuration? Perhaps there are some other settings that I'm missing.
ulimit
older simpler, and should work in this case. – ctrl-alt-delor Jun 11 '18 at 23:18systemd
is the only option. Based on the man page theMemoryMax
should work for a service. It just doesn't for some reason. – ilya1725 Jun 11 '18 at 23:25ulimit
doesn't work for memory restrictions. The last kernel to support it (RLIMIT_RSS) was 2.4.30, which is 12 years old. See https://unix.stackexchange.com/a/32375/4358 – phemmer Jun 12 '18 at 12:25