최근 내 컴퓨터에 메모리가 부족합니다(대규모 GIS 데이터 세트로 작업할 때 소프트웨어를 컴파일할 때 예상치 못한 결과가 발생함). 시스템 로그에는 다음 줄에 표시된 대로 OOM 상황을 처리하는 방법이 자세히 설명되어 있습니다.
Out of memory: Kill process 7429 (java) score 259 or sacrifice child
그게 무슨 or sacrifice child
내용이에요? 설마 일을 계속 진행시키기 위해 어떤 어두운 의식을 생각하고 있는 건 아니겠죠?
답변1
내가 찾은 소스 파일에서oom_kill.c, OOM Killer는 이러한 메시지가 시스템 로그에 기록된 후 식별된 프로세스의 하위 프로세스를 확인하고 프로세스 자체 대신 해당 프로세스 중 하나를 종료할 수 있는지 평가합니다.
다음은 이를 설명하는 소스 파일에서 추출한 주석입니다.
/*
* If any of p's children has a different mm and is eligible for kill,
* the one with the highest oom_badness() score is sacrificed for its
* parent. This attempts to lose the minimal amount of work done while
* still freeing memory.
*/
답변2
아이를 죽인다는 얘기야프로세스신호를 보낼 프로세스의 이름을 지정합니다 KILL
.
답변3
이것이 옴(메모리 부족) 킬러입니다. 시스템에 메모리가 부족해지면 Linux 커널은 프로세스를 종료하여 메모리를 확보합니다. 시스템을 손상시키지 않고 메모리를 확보하는 데 가장 적합한 프로세스를 결정하는 경험적 방법입니다. 일반적으로 루트 소유 프로세스는 가장 적합한 프로세스가 아닙니다.
자세한 내용은 여기를 클릭하세요:OOM Killer는 어떤 프로세스를 먼저 종료할지 어떻게 결정합니까?