콘텐츠로 이동

heaptrack - Linux용 힙 메모리 프로파일러 치트시트

heaptrack - Linux용 힙 메모리 프로파일러 치트시트

heaptrack (KDE)는 Linux용 힙 메모리 프로파일러입니다. 모든 메모리 할당을 추적하고 각각을 스택 추적으로 주석을 달아서 누수, 할당 핫스팟, 과도한 임시 할당, 피크 메모리 사용을 찾을 수 있습니다. 프로그램이 실행 중일 때 데이터 파일을 기록한 후, heaptrack_gui (풍부한 화염 그래프 및 차트) 또는 heaptrack_print (명령줄)로 분석합니다. 오버헤드는 현실적 워크로드에 충분히 낮습니다.

설치

플랫폼명령어
Debian/Ubuntusudo apt install heaptrack heaptrack-gui
Fedorasudo dnf install heaptrack heaptrack-gui
Arch Linuxsudo pacman -S heaptrack heaptrack-qt
소스에서KDE/heaptrack repo에서 빌드 (CMake)
검증heaptrack --version

레코딩

명령어설명
heaptrack ./my-program args시작부터 명령어 프로파일
heaptrack -p PID실행 중인 프로세스에 연결 (GDB 기반)
heaptrack -o out.zst ./prog특정 출력 파일에 쓰기
출력현재 디렉토리에 heaptrack.PROG.PID.zst 생성

끝낼 때, heaptrack은 요약을 출력하고 기록된 데이터 파일의 경로를 인쇄합니다.

분석 (GUI)

heaptrack_gui heaptrack.my-program.12345.zst
GUI 보기표시
요약피크 RSS, 총 할당, 누수 바이트
화염 그래프호출 스택에 속성된 할당
상향식 / 하향식할당별 호출 트리
Caller/callee할당 관계 탐색
차트시간에 따른 할당/누수/임시

분석 (CLI)

# 최상의 할당 핫스팟을 터미널에 인쇄
heaptrack_print heaptrack.my-program.12345.zst | less
메트릭의미
peak한 번에 유지된 최대 힙 메모리
leaked할당되었지만 해제되지 않은 메모리
allocations총 할당 수 (이탈)
temporary거의 즉시 해제된 할당 (낭비)
옵션설명
-a, --print-peak피크 메모리 소비자로 정렬
-l, --print-leaks누수 표시
-t, --print-temporary임시 할당 핫스팟 표시
-d, --diff FILE두 레코딩 비교

실행 비교 (Diff)

# 두 빌드/실행 간 변경 사항 보기
heaptrack_print -d before.zst after.zst

각 메트릭이 알려주는 것

증상살펴보기
프로세스 RSS 계속 증가leaked — 할당되었지만 해제되지 않음
높은 할당자 CPU 비용allocations / temporary — 너무 많은 이탈
부하 하의 OOMpeak — 최대 동시 메모리 감소
시작 메모리 급증관련 시간 범위의 화염 그래프

일반적인 워크플로우

# 서비스에서 누수 찾기
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30

# 무거운 작업 중 피크 메모리 속성 (GUI가 가장 쉬움)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst   # "peak" 화염 그래프 검사

# 핫 루프에서 임시 할당 이탈 감소
heaptrack_print -t heaptrack.*.zst | head

heaptrack vs 다른 메모리 도구

측면heaptrackValgrind (massif/memcheck)내장 할당자
오버헤드낮음높음 (memcheck 매우 높음)다양함
누수 탐지예 (memcheck)부분
할당 이탈예 (temporary)massif는 피크에 초점아니오
UI풍부한 GUI + CLI텍스트 / massif-visualizer없음
최고의 용도현실적 실행에서 빠른 힙 프로파일링깊은 정확성 검사빠른 검사

리소스