메모리 부족 메시지 란 무엇입니까?


20

내 컴퓨터에는 최근 메모리가 부족합니다 (대규모 GIS 데이터 세트로 작업하는 동안 소프트웨어를 컴파일하면 예기치 않은 결과가 발생했습니다). 시스템 로그에서 OOM 조건을 처리하는 방법을 자세히 설명하는 내용은 다음과 같습니다.

Out of memory: Kill process 7429 (java) score 259 or sacrifice child

그게 뭐야 or sacrifice child? 확실히 일을 계속하는 어두운 의식을 숙고하지 않습니까?

답변:


8

OOM Killer는 oom_kill.c 라는 소스 파일에서 이러한 메시지가 시스템 로그에 기록 된 후 식별 된 프로세스의 하위를 확인하고 가능한 경우 프로세스 자체 대신 종료 할 수 있는지 평가합니다.

다음은 이것을 설명하는 소스 파일에서 추출 된 주석입니다.

/*
 * 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.
 */

Firefox (Web Content)에서도 마찬가지입니다.
neverMind9

2

신호를 보내도록 지정된 프로세스 의 하위 프로세스 를 종료하는 것에 대해 이야기 하고 있습니다 KILL.


2
그러나 그것은 무엇을 의미 합니까? 부모가 자녀를 "희생"하여 스스로를 구할 수있는 방법이 있습니까?
Thanatos

제 추측은 추측에 불과합니다. 모든 프로세스는 Linux init 프로세스의 자손 이므로이 컨텍스트의 부모는 자식이 다양한 응용 프로그램 인 Linux 프로세스입니다. 이 경우 Linux 프로세스는 하위 프로세스 중 하나를 종료하여 자체적으로 저장됩니다.
Seamus

0

이것은 Oom (메모리 부족) 킬러입니다. 시스템에 메모리가 부족하면 Linux 커널은 프로세스를 종료하여 메모리를 비 웁니다. 휴리스틱은 시스템을 손상시키지 않고 메모리를 확보하기에 가장 적합한 프로세스를 결정합니다 (일반적으로 루트 소유 프로세스는 최상의 후보가 아닙니다).

자세한 내용은 여기에서 : OOM killer가 먼저 어떤 프로세스를 먼저 종료 시킬지 결정하는 방법은 무엇입니까?


4
그러나 이것은 메시지의 "또는 희생 아이"부분을 설명하지는 않습니다.
Mark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.