systemd.exec
のマンページ LimitXXXX 命令のリストと、それらを ulimit
と比較した便利な表があります。 setrlimit()
によるオプション システムコール。
プロセスのアドレス空間全体を制限するには (ulimit -v
) LimitAS=
を使用 .それ以外の場合は、スタックのみを制限します (ulimit -s
) LimitSTACK=
を使用 またはデータ セグメント (ulimit -d
) LimitDATA=
を使用
setrlimit()
によると これらの制限により、追加のメモリの割り当てが失敗します。 STACK と AS は、制限に達し、スタックを拡張する必要がある場合 (プログラムがこれを処理しなかった場合)、sigsegv でプログラムを終了します。
Systemd は、https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html で説明されているように、MemoryLimit オプションによるメモリ使用量の制限をサポートしています。
(サービスごとに) 許可されている最大メモリが使い果たされた場合にシステムが状況を処理する方法は、基盤となる cgroups の実装と systemd がリソース制御を実装する方法の両方に依存します。プロセスは (OOM キラーによって) 強制終了されると思います。
ulimit に類似した制限の場合:
man systemd.exec
...
LimitAS=(like ulimit -v)
...
LimitRSS=(like ulimit -m)
...