콘텐츠로 이동

hotspot - Linux perf 프로파일용 GUI 치트시트

hotspot - Linux perf 프로파일용 GUI 치트시트

hotspot (KDAB)는 Linux perf 프로파일러를 위한 Qt GUI입니다. 일반적인 대로 perf record로 기록한 후, 결과 perf.data를 hotspot에서 열어서 대화형 화염 그래프, 상향식 및 하향식 호출 트리, caller/callee 보기, 스레드별 타임라인, 오프 CPU 분석으로 탐색합니다. perf report의 읽기 어려운 출력을 시각적이고 탐색 가능한 프로파일로 변환합니다. hotspot이 perf를 실행 및 기록하도록 할 수도 있습니다.

설치

플랫폼명령어
Debian/Ubuntusudo apt install hotspot
Fedorasudo dnf install hotspot
Arch Linuxsudo pacman -S hotspot
AppImageGitHub Releases 페이지에서 다운로드 (이식 가능)
필요linux-perf / perf 설치됨

레코딩 (두 가지 방법)

# 옵션 A: perf로 기록, 그 후 hotspot에서 열기
perf record --call-graph dwarf -F 999 ./my-program args
hotspot perf.data

# 옵션 B: hotspot이 기록하게 하기 (GUI "Record" 탭)
hotspot   # 바이너리, 옵션 선택 및 Record 누르기
perf 플래그목적
--call-graph dwarf최고 스택 풀기 (디버그 정보 필요)
--call-graph fp프레임 포인터 풀기 (빠름, -fno-omit-frame-pointer 필요)
-F 999999 Hz에서 샘플
-p PID실행 중인 프로세스 기록
-g호출 그래프 활성화

보기

보기표시
요약샘플 수, 스레드, 핫 심볼
화염 그래프집계 스택; 너비 = 시간
상향식루트에서 리프로의 호출 트리
하향식핫 리프 함수 및 호출자
Caller/Callee심볼별 인바운드/아웃바운드 비용
타임라인시간 경과 스레드별 활동

탐색

액션사용
프레임 클릭화염 그래프를 해당 서브트리로 확대
검색이름으로 심볼 필터
시간 범위 선택 (타임라인)단계에 분석 초점 맞추기
반전 (하향식)비싼 리프 함수 찾기
스레드/프로세스별 필터워커 격리

오프 CPU 분석

hotspot은 CPU를 태우는 것이 아니라 차단된 (대기) 스레드를 어디 있는지 시각화할 수 있습니다. 지연 문제에 유용합니다.

# 오프 CPU 인사이트를 위한 스케줄러 스위치 기록
perf record --call-graph dwarf -e cycles \
  -e sched:sched_switch --switch-events ./my-program
hotspot perf.data

좋은 스택 얻기

필요수행
읽을 수 있는 심볼디버그 정보로 빌드 (-g), strip하지 말기
깊은 스택--call-graph dwarf
저렴한 스택프레임 포인터 + --call-graph fp
커널 심볼sysctl kernel.kptr_restrict=0, perf를 root로 실행
perf 권한sysctl kernel.perf_event_paranoid=1 (또는 더 낮음)

일반적인 워크플로우

# CPU 바운드 프로그램 프로파일 및 화염 그래프 탐색
perf record --call-graph dwarf -F 999 ./app
hotspot perf.data

# 요청이 느린 이유 조사 (차단/오프 CPU 시간)
perf record --call-graph dwarf -e sched:sched_switch --switch-events ./server
hotspot perf.data   # 오프 CPU 화염 그래프 검사

hotspot vs 다른 perf 프론트 엔드

측면hotspotperf reportFlameGraph 스크립트samply
UIQt GUITUI/text정적 SVGFirefox Profiler
오프 CPU제한적수동제한적
기록N/A (perf)아니오
최고의 용도대화형 perf 분석빠른 텍스트 보기공유 가능 SVG크로스 플랫폼

리소스