리눅스 운영체제에서 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)을 쓸 때 이런 현상이 발생할 수 있다.
착각하지 말자.
'c or linux' 카테고리의 다른 글
mac os x에서 linux의 date 테스트하기 - mac os x과 linux의 date는 다르다. (0) | 2015.11.09 |
---|---|
expr & bc 명령어 (정수 및 실수 연산을 bash에서 쓰기) (0) | 2015.11.04 |
[linux] top의 특정 항목으로 보기(소팅 관점) (0) | 2015.10.27 |
[리눅스] 특정 프로세스의 home directory 찾기 (0) | 2015.10.15 |
grep에 mmap 옵션 추가해서 검색하기 (0) | 2015.03.07 |