본문으로 건너뛰기

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

운영 안전 장치

  1. PID, cgroup, device, port 등 scope를 제한합니다.
  2. 낮은 sampling frequency와 짧은 duration으로 시작합니다.
  3. map size와 output rate에 상한을 둡니다.
  4. 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