스왑 공간이 꽉 찼지만 스왑 공간에 들어가거나 나가는 것이 없습니다.

스왑 공간이 꽉 찼지만 스왑 공간에 들어가거나 나가는 것이 없습니다.

메모리가 부족한 작업을 실행하고 스왑을 위해 쓰기 시작했습니다. 스왑 공간은 25GB이고 RAM은 1TB입니다.

스왑 영역이 11GB까지 꽉 차서 작업을 멈췄기 때문에 아직 50%가 비어 있었습니다.

OOM 종료 작업이 발생하지 않았으므로 모든 것이 발생하기 전처럼 정상적으로 작동하고 있습니다.

현재 스왑 공간은 8GB만 사용하고 있는데(작업을 중단한 후 3GB가 지워졌습니다) 점점 줄어들고 있습니다. 하지만 확인해보니 vmstatsi둘 다 스왑에 들어오고 나가는 것이 아무것도 없습니까 so? 0어떻게 이럴 수있어?

free -lm
              total        used        free      shared  buff/cache   available
Mem:        1031757      475637       49100          63      507019      553720
Low:        1031757      982657       49100
High:             0           0           0
Swap:         25767        8272       17495

에 여유 공간이 있으므로 40GB실행 중인 작업이 지금이 아닌 나중에 종료될 것으로 예상해야 합니까 RAM? 사용된 공간이 사용 가능한 공간보다 적어서 괜찮아 보이는데, 아직도 발동되지 말라고 하는 것인지 모르겠습니다.OOM8GBswap40GBRAMOOM

몇 달 전, OOM트리거되었을 때 모든 작업이 종료되고 스왑 공간 25GB(모두 가득 찼음)이 사용된 후 10분 후에 발생했습니다 0GB. 그런데 이런 경우에는 정리하는데 하루가 걸리게 되는데 2-3 GB, swap. 이게 러닝 중인 직업에 나쁜 소식일까요?

내가 실행하고 있는 작업이 지금이 아니라 나중에 여유 스왑 공간에 도달하여 종료를 0 GB유발할 때 종료될 위험에 처해 있다고 생각하십니까 ? OOM그렇다면 어떻게 이런 일이 발생하지 않도록 방지할 수 있습니까?

도움을 주시면 감사하겠습니다.

답변1

vmstat매개변수가 없으면 재시작 후의 평균값이 표시됩니다. 스왑 인/아웃은 블록/초로 표시되므로 합리적인 가동 시간이 있는 경우 0으로 표시되는 것은 놀라운 일이 아닙니다.

이제 스왑에 포함된 메모리는 사용 중이지만 프로세스의 메모리 과부하로 인해 스왑 아웃된 후에는 더 이상 사용되지 않는 메모리입니다. 많은 프로세스에는 시작 중에만 사용되는 메모리가 있으므로 이는 실제로 좋은 것입니다. 교체하면 프로세스와 버퍼/캐시를 위한 여유 RAM이 더 많아집니다.

그 이유는 이전의 경우했다OOM이 발생하고 이벤트가 발생한 직후 모든 스왑 공간이 다시 해제됩니다. 이는 아마도 OOM을 발생시킨 프로세스가 모든 공간을 사용하고 중지 후 모든 스왑 공간이 다시 해제되었기 때문일 것입니다.

OOM이 발생하는 유일한 시간은 사용 가능한 스왑 공간이 없고 사용 가능한 RAM이 없는 경우입니다(명령의 "사용 가능" 열인 버퍼/캐시를 고려 free).

나머지 경우에는 일반적으로 Linux의 메모리 관리가 올바른 작업을 수행한다고 신뢰할 수 있습니다. 실행 중인 로드/애플리케이션 유형으로 인해 특별한 요구 사항이 있는 경우에만 메모리 관리 조정을 시작하면 됩니다.

관련 정보