사실 글 쓰기 전에 카테고리를 어디에 넣어야 할지 정말 많은 고민을 했다 ㅋㅋㅋ

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)


다음과 같은 결과가 잘 나오는 것을 볼 수 있다.

+ Recent posts