시스템 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%였습니다) 프로세스가 다시 시작되지 않았습니다. 나는 MemoryMax( MemoryLimit이전 버전을 동일한 값으로) 교체하려고 시도했지만 아무런 효과가 없습니다. 내가 무엇을 놓치고 있나요?

고쳐 쓰다

계산 처리를 위한 시스템 설정이 올바르게 켜져 있는지 확인했습니다.

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

그러나 커널 구성에서 다음을 발견했습니다.

여기에 이미지 설명을 입력하세요.

선택한 옵션으로 커널을 재구축하는 것이 충분합니까 Memory Controller?

답변1

예, 이 옵션을 켜면 MemoryMax가 예상대로 작동하게 됩니다.

관련 정보