리눅스에서 C, C++ 관련 프로그래밍시 늘 이야기가 나오는 부분이 메모리릭(memory leak)입니다.
메모리릭을 잡는 툴로는 현재 valgrind, insure, purify 등의 소프트웨어가 나와있는데요.

회사 업무 관계로 한 소프트에 3가지를 모두 돌려보았습니다.

ibm의 purify는 정말 어이없는 성능을 보여줍니다.
insure는 좋은 인터페이스와 성능을 보여주지만, 유료입니다.
valgrind는 무료임에도 불구하고 좋은 성능을 보여주더군요.

하지만, 이런 메모리릭잡는 좋은 툴로도,
멀티쓰레드 환경과 라이브러리가 엉켜있는 환경에서는
100% 메모리릭 체크를 하지 못할 수 있습니다.

다음은 메모리를 모니터링하기 위한 제가 알고 있는 방법들입니다.

1) top 을 이용한 방법
top은 가장 보편적인 메모리를 보는 방법입니다. 문제는 top의 경우 메모리에 대한 정보를 로그로 남기기가 쉽지 않습니다.  다음은 탑을 사용한 메모리 감시 스크립트입니다.

2) ps -p
ps 역시 메모리를 볼 수 있습니다. 다음은 ps를 이용한 메모리 감시법입니다.

3) free -m -s10
free는 시스템 전체의 메모리를 감시합니다. 이 방법은 한 바이너리가 한 시스템에 올라갈때만 유효합니다. 뒤의 s옵션은 시간을 나타냅니다. 위의 3번 예는 10초를 간격으로 시스템의 메모리를 감시합니다.

4) 그 외 방법들
(a) sar -r 1
(b) vmstat 1 1

개인적으로는 1번을 선호합니다.
Posted by kkckc
,