IT 정보/리눅스

🔥 실무 팁(고급): 리눅스 'perf'와 FlameGraph로 네트워크 성능 병목 심층 분석

DONOT 2025. 6. 27. 08:54
눈에 보이지 않는 네트워크 병목, perf와 FlameGraph로 찾아내기
FlameGraph
리눅스 서버에서 원인 모를 네트워크 지연이 발생할 때,
perfFlameGraph를 이용해 커널 수준까지 파고들어 병목 지점을
시각적으로 찾아내는 고급 트러블슈팅 기법입니다.

핵심 분석 절차
# 1. FlameGraph 스크립트 다운로드
git clone https://github.com/brendangregg/FlameGraph.git

2. 시스템 전체 CPU 샘플링 (60초간)

sudo perf record -F 99 -ag -- sleep 60

3. 샘플링 데이터 스크립트로 변환

sudo perf script > out.perf

4. FlameGraph 생성

./FlameGraph/flamegraph.pl out.perf > kernel_network.svg




실무 적용 포인트

  • 넓은 막대 찾기: FlameGraph에서 가장 넓은 부분을 차지하는 함수가 CPU를 많이 사용한 병목 지점입니다.
  • 네트워크 스택 분석: `tcp_transmit_skb`, `ip_queue_xmit` 등 커널 네트워크 함수들의 비중을 확인해 TCP/IP 스택의 문제를 진단할 수 있습니다.
  • 드라이버 문제 식별: `ixgbe` (Intel), `mlx5` (Mellanox) 등 특정 네트워크 드라이버 함수가 상위를 차지한다면 드라이버 또는 하드웨어 문제일 수 있습니다.

FlameGraph로 커널 깊숙한 곳의 네트워크 성능 문제를 해결하세요!
반응형