Manuálová stránka pro systemd.exec
obsahuje seznam instrukcí LimitXXXX a praktickou tabulku s jejich porovnáním s ulimit
možnosti pomocí setrlimit()
systémové volání.
Chcete-li omezit celý adresní prostor procesu (ulimit -v
) použijte LimitAS=
. V opačném případě omezíte pouze zásobník (ulimit -s
) použijte LimitSTACK=
nebo datový segment (ulimit -d
) použijte LimitDATA=
Podle setrlimit()
manpage, tyto limity způsobí selhání alokace další paměti. STACK a AS ukončí program pomocí sigsegv, pokud je dosaženo limitu a zásobník potřebuje růst (a program to nezvládl).
Systemd podporuje omezení využití paměti pomocí možnosti MemoryLimit, jak je popsáno na:https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
Způsob, jakým systém zachází se situací, kdy je vyčerpáno maximum povolené paměti (na službu), závisí jak na základní implementaci cgroups, tak na způsobu, jakým systemd implementuje řízení zdrojů; Hádám, že proces by byl zabit (přes OOM killer).
Pro limity analogické k ulimit:
man systemd.exec
...
LimitAS=(like ulimit -v)
...
LimitRSS=(like ulimit -m)
...