システム MemoryMax が動作しませんか?

システム MemoryMax が動作しませんか?

特定のサービスがシステムメモリの割合(この場合の制限は10%)で終了する前に使用できるメモリ量を制限するように.serviceファイルを設定しようとしています。

[Unit]
Description=MQTT Loop
After=radioLoop.service

[Service]
Type=simple
Environment=PYTHONIOENCODING=UTF-8
ExecStart=/usr/bin/python3 -u /opt/pilot/mqttLoop.py
WorkingDirectory=/opt/pilot
StandardOutput=journal
Restart=on-failure
User=pilot
MemoryMax=10%

[Install]
WantedBy=multi-user.target

興味のあるラインは、MemoryMax私が理解したことに基づいて構築したいものです。システム文書

私のシステムバージョンは次のとおりです

systemd 241 (241)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid

しかし、これはうまくいきません。

# ps -m -o lwp,rss,pmem,pcpu,unit -u pilot
  LWP   RSS %MEM %CPU UNIT
    - 76244 30.3  8.5 mqttLoop.service
 1232     -    -  7.0 mqttLoop.service
 1249     -    -  1.7 mqttLoop.service
 1254     -    -  0.2 mqttLoop.service

10%がはるかに超えた(30%でした)、プロセスは再開されませんでした。私はMemoryMaxMemoryLimit以前のバージョンを同じ値に)置き換えようとしましたが、何の効果もありません。私は何を見逃していますか?

修正する

計算処理のためのシステム設定が正しくオンになっていることを確認しました。

# grep -i "memory" system.conf
#DefaultMemoryAccounting=yes

しかし、カーネル構成で次のことがわかりました。

ここに画像の説明を入力してください。

選択したオプションでカーネルを再構築するのに十分ですかMemory Controller

答え1

はい、このオプションをオンにすると、MemoryMaxが期待どおりに機能します。

関連情報