6.2 perf와 eBPF의 경계
perf와 eBPF는 평균 metric 아래의 code path와 event를 볼 수 있지만, 먼저 어떤 질문을 답할지 정해야 합니다. 무제한 tracing은 overhead와 민감 정보 노출을 키웁니다.
도구 선택
- CPU hotspot:
perf record, profile - System call latency: tracepoint 기반 도구
- Block I/O latency 분포: block tracepoint
- TCP connection과 retransmit: network tracepoint
- 짧은 process lifetime: exec와 exit event
운영 안전 장치
- PID, cgroup, device, port 등 scope를 제한합니다.
- 낮은 sampling frequency와 짧은 duration으로 시작합니다.
- map size와 output rate에 상한을 둡니다.
- query text, path, packet data가 포함되는지 확인합니다.
관측 전후의 CPU와 latency도 비교합니다.
Flame graph에서 넓은 frame은 sampling된 CPU time 비중이 크다는 뜻입니다. Wall-clock wait와 같지 않습니다. Off-CPU 분석은 별도 event와 stack 수집이 필요합니다.
경고
Production kernel에 맞지 않는 probe나 검증되지 않은 script를 바로 실행하지 않습니다. BTF, symbol, kernel configuration에 따라 관측 가능성과 결과가 달라집니다.
참고: Linux tracing documentation, BPF documentation, perf security