나의 서버의 현재 메모리는 시스템적으로 돌아가는 프로세스만 동작 중이다. 그래서 펑펑 놀고 있는 서버이다.

image

 

top명령으로 보았을 때, 정보를 보면 약간 이상하다. 전체 메모리 2G에 사용된 (used) 메모리 1.2G이다.  결국 8G 의 free 메모리만 있다. buffers와 cached 메모리에 많은 메모리가 할당되어 있다.

image

 

그 이유는 리눅스 커널에서는 프로세스가 반납한 메모리를 바로 free로 돌리지 않는다.

Cached memory는 실행중인 프로그램이 메모리가 필요하다면 바로 대체될 수 있는 free memory인 셈이다. 기존에 실행했던 프로그램이 이 영역을 사용했었고, 또 필요하면 이 영역을 준다고 하면 될 것 같다.

buffers 메모리는 data structure, chunk의 개념이 들어가 있는 메모리인데 반해 cached는 패킷 단위의 메모리 로 보면 된다.

리눅스 커널은 ram에 대해서 buffers, cached, free 이렇게 3단계로 구분해서 메모리를 구분하고 있다.

 

top 명령어를 통해서 본 메모리를 본다.

image

VIRT는 프로세스가 전에 사용했던 가상 메모리의 전체 크기를 말한다. code, data, shared library 등을 포함한다. top 명령어는 각 프로세스의 /proc/#pid/state 의 VmSize 의 내용을 가지고 이 정보를 보여준다. swap + res 영역을 더한 값이다. 이 값이 크면, 얼마나 많은 메모리가 접근하고 있는지를 알 수 있는 지표가 된다.

RES는 프로세스가 사용중인 RAM 에 올라간 물리 메모리 (swap 제외) 를 말한다.

SHR는 프로세스가 사용중인 공유 메모리의 합이다.

 

나머지 정보는 man top 을 통해서 볼 수 있다.

'c or linux' 카테고리의 다른 글

[ubuntu] 디스크 용량 확인  (0) 2012.01.18
Ubuntu의 SMART 프로그램  (0) 2012.01.09
Swap 메모리  (2) 2012.01.05
리눅스 운영체제의32bit 또는 64bit 여부 확인  (0) 2011.12.30
ubuntu 패스워드 변경  (0) 2011.11.23
Posted by '김용환'
,