echo 1000 >/proc/<pid>/oom_score_adj
대상 프로그램이 이미 실행 중이므로 직접 설정을 신뢰할 수 없습니다. 이 경우 대상 프로그램이 이전에 OOM을 발생시켰을 수 있습니다.echo 1000 >/proc/<pid>/oom_score_adj
답변1
oom_score_adj
포크에서 상속되므로 상위 프로세스에서 원하는 값을 설정하여 새 하위 프로세스의 초기 값을 설정할 수 있습니다.
따라서 쉘 스크립트에서 대상을 시작하면
echo 1000 > /proc/$$/oom_score_adj
셸의 값을 1000으로 변경하고 셸에서 분기된 모든 후속 프로세스는 oom_score_adj
1000으로 설정된 값으로 시작됩니다.
답변2
M. Kitt의 답변에서 볼 수 있듯이 상위 프로세스에 설정하는 대신 자체적으로 설정을 적용하는 체인 로딩 도구를 통해 하위 프로세스에서 프로그램을 실행하여 분기 후 하위 프로세스에 설정할 수 있습니다. 그런 다음 간단히 대상 프로그램을 체인로드합니다.
저는 2016년에 Linux 운영 체제와 FreeBSD/TrueOS의 메커니즘을 이해하는 nosh 도구 세트를 위해 이러한 유틸리티를 작성했습니다.
oom-kill-protect -- 1000대상 프로그램의 일부 매개변수
--
이는 누군가가 음수 OOM 점수를 사용하도록 조정하기로 결정한 경우에 발생합니다. ☺
추가 읽기
- 조나단 데보인 폴라드(2016).
oom-kill-protect
. Nosh 툴셋. 소프트웨어. - 조나단 드 보인 폴라드(2016-01-31).OOM Killer 보호 기능이 있는 syslogd(8). FreeBSD 해커.