사실 글 쓰기 전에 카테고리를 어디에 넣어야 할지 정말 많은 고민을 했다 ㅋㅋㅋ
Valgrind는 여러 CPU family에서 사용 가능하고 또한 지원하는 언어도 다양하기 때문에 거의 어디서든 사용할 수 있기 때문이다.
그래서 그냥 programing에 넣어버렸다.
각설하고, Valgrind는 memory trace tool로 대부분 memory leak이나 잘못된 포인터의 접근 등을 알아보는데 쓰이지만 나는 현재 진행하고 있는 in-memory 프로젝트에서 Cassandra가 현재 어떻게, 얼마나 메모리를 사용하고 있는지 알아보기 위해 사용하도록 하겠다.
1. 다운 & 설치
# wget http://www.valgrind.org/downloads/valgrind-3.7.0.tar.bz2
# tar -xvjf valgrind-3.7.0.tar.bz2
리눅스의 기본 3대 설치법
./configure
make
make install
끗!
단, 주의할 점이 있는데 README를 읽어보자.
Important! Do not move the valgrind installation into a place
different from that specified by --prefix at build time. This will
cause things to break in subtle ways, mostly when Valgrind handles
fork/exec calls.
라고 합니다. 난 걍 설치 ㄱㄱ
구동하기 위해선 다음과 같은 패키지가 필요한듯.
On Debian, Ubuntu: libc6-dbg
On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo
테스트 해보자 ! ls -l 을 가지고 테스트해 보겠다
# valgrind ls -l
leak check을 위해서는 --leak-check=yes 옵션을 붙여준다.
==8275== HEAP SUMMARY:
==8275== in use at exit: 15,212 bytes in 109 blocks
==8275== total heap usage: 604 allocs, 495 frees, 102,693 bytes allocated
==8275==
==8275== LEAK SUMMARY:
==8275== definitely lost: 80 bytes in 2 blocks
==8275== indirectly lost: 240 bytes in 20 blocks
==8275== possibly lost: 0 bytes in 0 blocks
==8275== still reachable: 14,892 bytes in 87 blocks
==8275== suppressed: 0 bytes in 0 blocks
==8275== Rerun with --leak-check=full to see details of leaked memory
==8275==
==8275== For counts of detected and suppressed errors, rerun with: -v
==8275== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 31 from 8)
다음과 같은 결과가 잘 나오는 것을 볼 수 있다.