Halaman manual untuk systemd.exec
memiliki daftar instruksi LimitXXXX dan tabel praktis yang membandingkannya dengan ulimit
opsi, melalui setrlimit()
panggilan sistem.
Untuk membatasi seluruh ruang alamat proses (ulimit -v
) gunakan LimitAS=
. Kalau tidak, untuk membatasi hanya tumpukan (ulimit -s
) gunakan LimitSTACK=
atau segmen data (ulimit -d
) gunakan LimitDATA=
Menurut setrlimit()
halaman manual, batasan ini akan menyebabkan pengalokasian memori tambahan gagal. STACK dan AS akan menghentikan program dengan sigsegv jika batas tercapai dan tumpukan perlu bertambah (dan program tidak menangani ini).
Systemd mendukung pembatasan penggunaan memori melalui opsi MemoryLimit, seperti yang dijelaskan di:https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
Cara sistem menangani situasi ketika memori maksimum yang diizinkan (per layanan) habis tergantung pada implementasi cgroup yang mendasarinya dan cara systemd mengimplementasikan kontrol sumber daya; Saya menduga prosesnya akan dimatikan (melalui pembunuh OOM).
Untuk limit analog dengan ulimit:
man systemd.exec
...
LimitAS=(like ulimit -v)
...
LimitRSS=(like ulimit -m)
...