bpftop - 라이브 eBPF 프로그램 모니터 치트시트
bpftop (Netflix)는 호스트의 모든 실행 중인 eBPF 프로그램을 실시간으로 보는 터미널 UI입니다. 각 프로그램에 대해 평균 실행 시간, 초당 이벤트, 예상 CPU 사용량을 표시하며 실시간 업데이트됩니다. 어떤 eBPF 프로그램이 실행 중인지, 얼마나 자주 발동하는지, 얼마나 많은 오버헤드를 추가하는지 볼 수 있습니다. eBPF가 관찰성, 네트워킹, 보안 도구에 확산되면서 bpftop은 “어떤 eBPF가 실행 중이고 비용이 얼마인가?”라는 질문에 답합니다.
요구사항
- eBPF 실행시간 통계 지원이 있는 Linux 커널
- 루트 권한 (커널 BPF 통계 읽기)
- bpftop은 실행 중
kernel.bpf_stats_enabled를 활성화하고 종료 시 복구
설치
실행
| 명령어 | 설명 |
|---|
sudo bpftop | 라이브 TUI 실행 |
bpftop --help | 옵션 표시 |
bpftop --version | 버전 |
bpftop은 커널 BPF 통계를 읽고 bpf_stats_enabled를 전환하므로 루트로 실행해야 합니다.
디스플레이
| 열 | 의미 |
|---|
| ID | BPF 프로그램 ID |
| Name | 프로그램 이름 |
| Type | 프로그램 타입 (kprobe, tracepoint, XDP, cgroup, …) |
| Period Avg Runtime (ns) | 마지막 기간의 실행당 평균 시간 |
| Total Avg Runtime (ns) | 통계 활성화 이후 평균 |
| Events/sec | 호출 속도 |
| Est. CPU % | 이 프로그램의 예상 CPU 사용률 |
대화형 키
| 키 | 액션 |
|---|
↑ / ↓ | 선택 이동 |
Enter | 선택된 프로그램에 대한 상세 그래프 열기 |
| 정렬 | 런타임 / 이벤트 / CPU로 순서 (열) |
q | 종료 (이전 bpf_stats_enabled 상태 복구) |
살펴봐야 할 것
| 관찰 | 해석 |
|---|
| 한 프로그램의 높은 Est. CPU % | eBPF 프로그램이 실제 오버헤드 추가 |
| 높은 events/sec | 핫 훅이 매우 자주 발동 |
| 상승하는 평균 런타임 | 프로그램이 시간에 따라 더 비싸짐 |
| 예상치 못한 프로그램 | 알지 못한 eBPF |
왜 중요한가
eBPF는 Cilium/Tetragon, Falco, Tracee, Pixie, 많은 프로파일러 같은 도구의 기반입니다. 각각 프로그램을 커널에 로드합니다. bpftop은 집계 풋프린트를 보고 호스트를 저하시키기 전에 오작동하거나 과열된 프로그램을 잡을 수 있는 단일 장소입니다.
일반적인 워크플로우
# 지금 실행 중인 eBPF 및 비용 보기
sudo bpftop
# 새로 배포된 eBPF 보안 에이전트의 오버헤드 검증
sudo bpftop # 부하 하의 에이전트 프로그램의 Est. CPU % 보기
# 추적 도구가 일으키는 신비한 CPU 회귀 조사
sudo bpftop # Est. CPU %로 정렬, 최상위 프로그램으로 드릴
bpftop vs 관련 도구
| 측면 | bpftop | bpftool | btop / htop |
|---|
| 초점 | 라이브 프로그램별 eBPF 메트릭 | BPF 객체 검사/관리 | 전체 시스템 프로세스 |
| 실시간 비용 | 예 (런타임, 이벤트, CPU) | 정적 목록 | 프로세스 CPU/mem |
| UI | TUI 그래프 | CLI | TUI |
| 최고의 용도 | eBPF 오버헤드 모니터링 | BPF 프로그램/맵 관리 | 일반 모니터링 |
리소스