리눅스 버퍼/캐시 메모리 많이 차지해도 괜찮은 이유

리눅스에서 free -h 로 메모리 점유 수준을 확인한다. 간혹 used 항목이 total 메모리 수준에 거의 붙어서 나타는 경우가 있다.

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          62Gi       60Gi        2Gi         16Mi        50Gi        5.6Gi
Swap:         2.0Gi          0B       2.0Gi

예를 들면 총 메모리가 62GB 시스템에서 사용 중인(used) 메모리가 60GB인 것처럼 말이다.

이럴 때 buff/cache 항목을 확인해야 한다. OS에 따라 -/+ buffers/cache 로 표기되기도 한다. 버퍼 캐시가 차지하는 메모리다. 버퍼 캐시가 사용하는 메모리도 used 항목에 포함된다.

버퍼(buffer)는 데이터를 디스크에 쓰기 전에 임시로 저장해 두는 역할을 한다. 디스크 쓰기 작업을 더 효율적으로 수행하도록 돕는다.

캐시(cache)는 파일 시스템에서 읽어들인 데이터를 저장한다. 다음번에 동일한 파일에 접근할 때 캐시 메모리에서 바로 읽을 수 있도록 만들어 속도가 빨라진다.

리눅스는 자동으로 메모리 최적화 작업을 한다. 자주 사용되거나 최근에 사용된 데이터를 캐시로 저장한다. uptime이 길수록 버퍼 캐시가 차지하는 메모리는 늘어나는 경향이 있다.

‘그러다 진짜 메모리가 필요해지면 어떡하나’ 걱정할 필요는 없다. 리눅스는 메모리가 필요할 때 퍼버 캐시를 자동으로 줄이고 필요한 프로세스에 메모리를 할당한다.

한마디로 버퍼 캐시가 높아서 메모리 사용량이 높은 상태를 유지하더라도 시스템 운영에 문제가 없다.

버퍼 캐시 메모리가 아주 높은 메모리를 차지하고 있을 때 top 명령어로 프로세스 별 메모리 사용 현황을 보면 막상 메모리를 많이 쓰는 프로세스가 없다는 걸 눈치챌 수 있다.

댓글 남기기