리눅스 운영체제에서 top 명령어을 시용하여 운영 체제 메모리는 total, free, used로 나눈다. 만약 프로세스 메모리를 따져봐도 free가 너무 적고 used가 큰 경우가 존재한다. 이 때는 free 명령어를 이용하여 정말 메모리가 없는지 확인해야 한다.


32G 메모리 장비에서 top 명령어로 500M만 free이고 31.5G가 used로 나온다.


free로 확인하니 첫번 째 줄은 top처럼 출력하지만, buffers/cache에서는 free의 값이 17이다. (cached가 16임)


# free -g

             total       used       free     shared    buffers     cached

Mem:            31         30          0          0          0         16

-/+ buffers/cache:         14         17

Swap:            9          0          9



아래와 같이 buffers/cache 메모리를 정리하고 난 후 free로 메모리를 확인하면 다음과 같이 메모리 값이 변경된다.

전체 메모리가 0에서 17로 변경했다.  (cached는 0으로 변경했다.)


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


# free -g

             total       used       free     shared    buffers     cached

Mem:            31         13         17          0          0          0

-/+ buffers/cache:         13         17

Swap:            9          0          9



운영체제는 파일 IO가 발생할 때, 남는 메모리를 buffer나 cache에 메모리를 할당하여 속도를 빠르게 한다.


total memory = used + free 

total memory = used + buffers + cache 



메모리 DB나 메모리만 쓰는 일래스틱서치에서 파일 백업(snapshot)을 쓸 때 이런 현상이 발생할 수 있다.

착각하지 말자. 



Posted by '김용환'
,