Repolode
flamegraph-rs

flamegraph-rs/flamegraph

Perl 없이 perf, xctrace 또는 dtrace/blondie로 Cargo 프로젝트나 바이너리를 프로파일링하는 Rust 기반 flamegraph 생성기입니다.

스타
6,053
포크
194
열린 이슈
75
마지막 커밋
5일 전

어떤 프로젝트인가요?

flamegraph는 프로그램이 어디에서 시간을 쓰는지 보여 주는 flamegraph를 생성합니다. cargo flamegraph 하위 명령으로 Cargo 프로젝트를 프로파일링할 수 있으며, PID를 지정해 임의의 바이너리나 이미 실행 중인 프로세스도 프로파일링할 수 있습니다. 스택 샘플은 플랫폼의 네이티브 도구로 수집하고, Inferno 라이브러리를 기반으로 한 인터랙티브 SVG로 렌더링합니다.

Linux에서는 perf, macOS에서는 xctrace를 사용하며, Windows에서는 blondie 라이브러리 또는 설치된 경우 DTrace를 사용합니다. 빌드 프로필, 바이너리, example, benchmark 또는 test 대상, 샘플링 주파수, 색상 팔레트, 사용자 지정 perf 또는 dtrace 명령을 선택하는 옵션을 제공합니다.

README에는 flamegraph를 읽는 방법과 USE Method, 최적화에 앞서 벤치마킹하라는 조언 등 성능 측정 관련 참고 사항도 담겨 있습니다.

핵심 기능

  • 01cargo flamegraph를 통해 Cargo 프로젝트, 바이너리, example, benchmark 및 test를 프로파일링합니다.
  • 02PID를 지정해 실행 중인 프로세스에 연결합니다.
  • 03Linux에서는 perf, macOS에서는 xctrace, Windows에서는 blondie 또는 DTrace를 사용합니다.
  • 04브라우저에서 열 수 있는 인터랙티브 SVG를 생성합니다.
  • 05사용자 지정 perf 또는 dtrace 명령 옵션과 여러 색상 팔레트를 지원합니다.
  • 06bash, fish, zsh, powershell, elvish에서 flamegraph 바이너리의 셸 자동 완성을 제공합니다.

활용 사례

  • 최적화에 앞서 Rust 애플리케이션에서 실행 시간이 많이 드는 함수를 찾습니다.
  • Perl을 설치하거나 직접 파이프라인을 구성하지 않고 C 또는 C++ 바이너리를 프로파일링합니다.
  • benchmark 또는 test 실행에서 시간이 어디에 쓰이는지 비교합니다.
  • 프로세스 ID로 연결해 이미 실행 중인 서비스를 프로파일링합니다.

빠른 시작

  1. 1

    Cargo로 flamegraph 바이너리를 설치합니다

    cargo install flamegraph
  2. 2

    Rust 프로젝트를 프로파일링합니다

    cargo flamegraph
  3. 3

    임의의 바이너리를 프로파일링합니다

    flamegraph -- /path/to/binary

사용 전 알아둘 점

  • 프로파일링에는 플랫폼별 도구가 필요합니다. Linux에서는 perf, macOS에서는 xctrace, Windows에서는 blondie 또는 dtrace를 사용합니다.
  • lld(Rust 1.90.0부터 기본값) 또는 mold를 사용하는 Linux에서는 --no-rosegment 링커 플래그를 추가해야 합니다. 추가하지 않으면 스택 트레이스가 부정확할 수 있습니다.
  • 권한이 없는 사용자가 perf를 사용하려면 perf_event_paranoid 값을 낮춰야 할 수 있으며, 이로 인해 시스템 보안이 약화됩니다.

포함된 컬렉션

토픽

자주 묻는 질문

flamegraph은(는) 무엇인가요?
Perl 없이 perf, xctrace 또는 dtrace/blondie로 Cargo 프로젝트나 바이너리를 프로파일링하는 Rust 기반 flamegraph 생성기입니다. flamegraph는 프로그램이 어디에서 시간을 쓰는지 보여 주는 flamegraph를 생성합니다. cargo flamegraph 하위 명령으로 Cargo 프로젝트를 프로파일링할 수 있으며, PID를 지정해 임의의 바이너리나 이미 실행 중인 프로세스도 프로파일링할 수 있습니다. 스택 샘플은 플랫폼의 네이티브 도구로 수집하고, Inferno 라이브러리를 기반으로 한 인터랙티브 SVG로 렌더링합니다.
flamegraph은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
flamegraph은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
flamegraph은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. flamegraph의 마지막 커밋은 2026년 11월 2일입니다.
flamegraph은(는) 어디에 사용할 수 있나요?
최적화에 앞서 Rust 애플리케이션에서 실행 시간이 많이 드는 함수를 찾습니다. Perl을 설치하거나 직접 파이프라인을 구성하지 않고 C 또는 C++ 바이너리를 프로파일링합니다. benchmark 또는 test 실행에서 시간이 어디에 쓰이는지 비교합니다. 프로세스 ID로 연결해 이미 실행 중인 서비스를 프로파일링합니다.
flamegraph는 어떻게 설치하나요?
Cargo로 flamegraph 바이너리를 설치합니다: cargo install flamegraph Rust 프로젝트를 프로파일링합니다: cargo flamegraph 임의의 바이너리를 프로파일링합니다: flamegraph -- /path/to/binary
flamegraph은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/flamegraph-rs/flamegraph

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트