eBPF(extended Berkeley Packet Filter) 프로그램의 성능을 심층적으로 분석하고 최적화할 수 있는 새로운 도구 'brr'(eBPF Runtime Reporter and Profiler)이 최근 공개되어 개발자들의 주목을 받고 있습니다. 이 도구는 eBPF 프로그램 자체의 활동은 물론, 프로브(probe)와 커널(kernel) 간의 상호작용, 공유 해시 맵(hash map) 사용 등 다양한 측면을 프로파일링(profiling)하여 성능 병목 지점을 명확하게 보여줍니다.
'brr'은 기존의 표준 'perf' 도구가 제공하는 CPU 샘플링 기능과 'bpftop'이 제공하는 eBPF 프로그램 실행 횟수 및 평균 런타임 정보를 통합합니다. 특히, CPU 샘플을 실제 eBPF 프로그램의 소스 코드 라인에 직접 매핑하여 어느 코드 라인에서 가장 많은 시간이 소요되는지 시각적으로 보여주는 것이 특징입니다. 이는 개발자가 최적화가 필요한 특정 코드 블록을 정확히 식별하는 데 큰 도움을 줍니다. 또한, eBPF 프로그램이 호출하는 리눅스 커널 함수 내에서 발생하는 시간 소모까지 추적하여, 숨겨진 성능 저하 요인까지 밝혀낼 수 있습니다.
이 도구는 'perf_event_open()' API와 'bpf()' 시스템 호출(syscall)을 직접 사용하여 eBPF 프로그램 통계 계정(BPF_ENABLE_STATS)을 활성화하는 방식으로 작동합니다. 'brr top'이라는 대화형 TUI(Text-based User Interface) 모드를 제공하여 실시간으로 성능 지표를 모니터링할 수 있으며, 'brr activity'나 'brr profile'과 같은 명령어를 통해 JSON, CSV 등 다양한 형식의 텍스트 기반 프로파일링 보고서를 생성할 수도 있습니다. 이를 통해 개발자는 eBPF 기반의 모니터링, 네트워킹, 보안 애플리케이션의 성능을 정밀하게 진단하고 개선할 수 있게 됩니다.