카테고리 없음

리눅스(linux) 캐시 메모리로 인한 free 메모리 부족 현상

G. Hong 2021. 2. 4. 13:54
728x90
반응형

리눅스 관리자들 중에서 메모리 부족으로 항상 고민을 하시는 분들이 있습니다.

아래의 예시와 같이 free 커맨드로 확인을 했을 때, free 메모리가 항상 낮은 수준인 점이 걱정 될 수 도 있습니다.

특히, 캐시메모리(cache) 값이 유독 높아서 free가 부족한 증상은 io가 많은 리눅스 환경에서 굉장히 자주 발생하는 문제 입니다.

 

결론 부터 말씀드리면, 이는 문제가 될 만한 장애가 아니고, 정상적인 상태입니다. 리눅스 관리자는 free가 아닌 available 수치를 모니터링하여야 합니다.

top 커맨드의 결과를 보실 때도 마찬가지 입니다. free가 아닌 avail Mem을 보시면 됩니다.

Cache 메모리가 항상 높은 이유

다들 아시겠지만 캐시메모리는 디스크에 데이타를 읽고 쓸 때 만들어지고 사용되게 됩니다. 리눅스에서도 마찬가지로 IO가 발생하게 될 때, 디스크의 일부 영역을 메모리로 읽어 들이게 되고, 이로 인해서 캐시메모리가 생기게 됩니다.

 

리눅스에서 캐시페이지는 읽기/쓰기 작업이 끝난 뒤에 반환(free)되지 않고, clean이나 dirty로 마크가 되게 됩니다. 즉, 사용이 끝나면 clean 상태가 될 뿐이지 free가 되지는 않습니다.

 

리눅스 커널에서는 메모리가 다른 작업을 위해서 추가로 메모리가 필요한 경우에만 캐시페이지를 free하게 되는 것입니다.

 

Cache 메모리 강제로 삭제

굳이 cache 메모리를 삭제해야 한다면, 아래 커맨드로 강제로 삭제가 가능합니다. 이 커맨드를 사용하게 되면 cache 값은 다시 0이 되게 되고, 당연히 free는 높아지게 됩니다. 이는 일반적인 상황에서는 권장하는 작업은 아니고, 특히 디스크 IO가 높은 상태에서는 진행하지 않는 것을 권장합니다.

 

# echo 3 > /proc/sys/vm/drop_caches

 

 

레드햇 관련 문서: access.redhat.com/solutions/67610

 

What is cache in "free -m" output and why is memory utilization high for cache? - Red Hat Customer Portal

What is cache in free -m output and why is memory utilization high for cache? How to check memory capacity required for Heap to create new server instance of JBoss by analyzing the free command output in JBoss, if there is already one instance of JBoss run

access.redhat.com

 

728x90
반응형