cargo flamegraph로 프로파일링

2025-01-25

이번 글을 비교적 짧게 작성되었는데, 하고 싶었던 게 고작 이 flamegraph를 보여드리기 위해서입니다. 수강하고 있는 프로그래밍 경시대회 코스에 문제들 중 하나를 뽑아 한번 프로파일링을 돌려봤습니다:

flamegraph

(참고: SVG 파일 안에 내용물과 상호작용이 가능하지만 사진을 우클릭한 후 새 탭에서 열어야 정상적으로 동작합니다!)

flamegraph 보기 너무 좋아요

참고: 윈도우에서 cargo flamegraph를 실행하기 위해선 사전 준비가 약간 필요합니다.

윈도우 사전준비

  1. 만약 BitLocker가 활성화되어 있다면 리커버리 키를 백업해두세요. 조금 뒤에 필요합니다. 최근 윈도우 머신들은 대부분 활성화되어 출고됩니다.
  2. 관리자 권한 터미널에서 bcdedit /set dtrace on을 실행해 dtrace 기능을 키세요.
  3. 마소의 공식 dtrace 레포지터리에서 설치 프로그램을 다운로드한 후 실행하세요.
  4. _NT_SYMBOL_PATH 시스템 환경 변수를 다음과 같이 설정하세요 (왜 이 값인지는 여기를 참고하세요):
srv*c:\symbols*https://msdl.microsoft.com/download/symbols
  1. 컴퓨터를 재시작한 후, 만약 물어본다면 BitLocker 리커버리 키를 입력하세요.

리눅스 사전준비

리눅스 상에선 커널 버전에 맞는 linux-tools 패키지들을 필요로 합니다. 전 NixOS를 쓰기 때문에, nix shell nixpkgs#linuxKernel.packages.linux_latest_libre.perf을 실행하여 flamegraph-rs가 필수로 요구하는 perf 패키지만을 설치했습니다. (libre 부분은 왜 있는지 모르겠지만 그게 안 적혀있는 패키지들을 없더라고요…) 자세한 정보는 디스트로에 맞는 설명을 위해 공식 README의 설치 부분을 참고하세요.