http://solarixer.blogspot.kr/2010/10/blog-post_08.html
리눅스에서 메모리 사용량 측정을 위한 방법을 소개 드립니다.
아래 3가지 외에도 여러 툴이나 시스템 커맨드가 있겠지만, 빠르고 정확하게 접근하기 위한 방법을 알아보는 것을 목적으로 합니다.
1) /proc/PID/status 를 보고 VmSize 를 통해 해당 프로세스에 할당된 메모리 용량을 확인 하는 방법이 있습니다.
(여러 개의 프로세스를 동시에 보기는 조금 불편한 감이 있습니다)
2) http://www.pixelbeat.org/scripts/ps_mem.py 에 나온 파이썬 스크립트를 이용하면 프로그램에 할당된 Private + Shared Memory의 총 합을 봅니다.
3) Top 으로 확인하는 방법이 있습니다.
그런데, 위 1번의 방법으로 xserver 를 보면 할당된 가상 메모리는 547MB 이고
2번 방법으로 xserver 의 할당 메모리를 보면 62MB로 많은 차이가 납니다.
3번 top을 확인하면 위 1번과 2번의 결과를 한 화면에서 볼 수 있습니다.
VIRT 는 프로세스가 소비하는 Virtual 메모리 총 크기(SWAP + RES)이고, RES는 물리적 메모리가 사용중인 상주크기(Resident Size) 입니다.
SHR 은 VIRT 크기 중 실제 공유가능한 메모리(또는 라이브러리) 크기를 나 나타냅니다.
자세히 보면 당연한 이야기겠지만, 1번의 노란 줄은 가상 메모리 이고 2번의 경우 working set의 개념이며 3번은 이 모두를 함께 보여주기 때문에 다릅니다.
윈도우 시스템에서 성능 테스트 할 때 커밋크기로 측정하는 경우가 많은데, 이는 위 top의 VIRT에 해당하는 프로세스가 예약한 가상 메모리의 양입니다.
결론적으로, Linux 시스템 상의 메모리 측정을 top 으로 하는 것이 가장 간단한 방법이라 생각합니다.
하지만, 가장 확실한 방법은 valgrind 같은 프로파일러에서 실행해보는 것입니다.
참고로.. 오픈소스인 valgrind 는
centOS이 경우 yum install valgrind 로 쉽게 설치 하고 확인 할 수 있습니다.
valgrind 를 이용한 메모리 누수에 관련한 정보는 아래 블로그에서도 간단하게 볼 수 있습니다.
http://forum.falinux.com/zbxe/?document_srl=528619
http://adnoctum.tistory.com/555
참고 : top 의 man page
위 정보들은 제가 개인적으로 검색과 사용을 통해 확인한 내용들이기 때문에 잘못된 정보가 포함되어 있을 수 있습니다.
혹시 잘못된 내용이 있다면 알려주시기 바랍니다.