システムメモリ制限が機能しない/例

システムメモリ制限が機能しない/例

使ってみようシステムインフラメモリ使用量が特定の値に達すると、メモリリークサービスを終了します。使用される構成ファイルは次のとおりです。

[Unit]
Description="Start memory gobbler"
After=network.target
MemoryAccounting=true
MemoryHigh=1024K
MemoryMax=4096K

[Service]
ExecStart=/data/memgoble 8388600

systemdバージョンは237です。しかし、MemoryMaxカーネルに何を設定しても、通常、カーネルは、メモリ消費がほぼ全体の物理RAMに達すると、それ自体がプロセスを終了します。私はこれをスワップせずに組み込みシステムで実行しています。

構成で明らかなエラーを発見した人はいますか?たぶん他の設定が欠落している可能性があります。

答え1

構成パラメーターが無効なセクションにあります。

ログを見ると、次のようになります。

Unknown lvalue 'MemoryAccounting' in section 'Unit'
Unknown lvalue 'MemoryHigh' in section 'Unit'
Unknown lvalue 'MemoryMax' in section 'Unit'

https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html

ユニットの種類によっては、[Slice]、[Scope]、[Service]、[Socket]、[Mount]、[Swap]の各セクションでリソース制御設定オプションが設定されます。

したがって、あなたは以下が欲しいです:

[Unit]
Description="Start memory gobbler"
After=network.target

[Service]
ExecStart=/data/memgoble 8388600
MemoryAccounting=true
MemoryHigh=1024K
MemoryMax=4096K

関連情報