Systemd
系統 MemoryMax 按百分比不起作用?
我正在嘗試配置我的 .service 文件以限制給定服務在終止之前可以使用多少記憶體,按系統記憶體的百分比(在這種情況下為 10% 作為上限):
[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 docs 的理解嘗試配置的線。我的 systemd 版本是:
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%),然後它不會重新啟動該過程。我試過交換
MemoryMax
(MemoryLimit
相同值的舊變體),但它沒有效果。我錯過了什麼?更新
我已確定處理計數的 systemd 設置已正確打開。
# grep -i "memory" system.conf #DefaultMemoryAccounting=yes
但我在核心配置中註意到以下內容:
Memory Controller
使用選定的選項重建核心就足夠了嗎?
是的,打開該選項足以使 MemoryMax 按預期工作。