버퍼와 캐쉬의 의미 참고글 -
http://kldp.org/node/48613
나의 서버의 현재 메모리는 시스템적으로 돌아가는 프로세스만 동작 중이다. 그래서 펑펑 놀고 있는 서버이다.
top명령으로 보았을 때, 정보를 보면 약간 이상하다. 전체 메모리 2G에 사용된 (used) 메모리 1.2G이다. 결국 8G 의 free 메모리만 있다. buffers와 cached 메모리에 많은 메모리가 할당되어 있다.
그 이유는 리눅스 커널에서는 프로세스가 반납한 메모리를 바로 free로 돌리지 않는다.
Cached memory는 실행중인 프로그램이 메모리가 필요하다면 바로 대체될 수 있는 free memory인 셈이다. 기존에 실행했던 프로그램이 이 영역을 사용했었고, 또 필요하면 이 영역을 준다고 하면 될 것 같다.
buffers 메모리는 data structure, chunk의 개념이 들어가 있는 메모리인데 반해 cached는 패킷 단위의 메모리 로 보면 된다.
리눅스 커널은 ram에 대해서 buffers, cached, free 이렇게 3단계로 구분해서 메모리를 구분하고 있다.
top 명령어를 통해서 본 메모리를 본다.
VIRT는 프로세스가 전에 사용했던 가상 메모리의 전체 크기를 말한다. code, data, shared library 등을 포함한다. top 명령어는 각 프로세스의 /proc/#pid/state 의 VmSize 의 내용을 가지고 이 정보를 보여준다. swap + res 영역을 더한 값이다. 이 값이 크면, 얼마나 많은 메모리가 접근하고 있는지를 알 수 있는 지표가 된다.
RES는 프로세스가 사용중인 RAM 에 올라간 물리 메모리 (swap 제외) 를 말한다.
SHR는 프로세스가 사용중인 공유 메모리의 합이다.
나머지 정보는 man top 을 통해서 볼 수 있다.
출처 : http://knight76.tistory.com/entry/TOP-%EC%9D%84-%ED%86%B5%ED%95%B4-%EB%B3%B8-%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A9%94%EB%AA%A8%EB%A6%AC