본문 바로가기
Etc2026년 4월 17일5분 읽기

개발자가 꼭 알아야 할 리눅스 성능 분석 도구 15가지 — top부터 eBPF까지

YS
김영삼
조회 542

USE 방법론 복습

Brendan Gregg의 USE: Utilization(사용률) / Saturation(포화도) / Errors(에러). 어떤 문제든 CPU·메모리·디스크·네트워크 4개 리소스에 이 3개 질문을 적용.

1. 시스템 개관

top / htop

htop    # F6로 정렬, F5로 트리 뷰

uptime

uptime  # load average 1/5/15분. CPU 수와 비교

dmesg

dmesg -T | tail -50   # OOM, 디스크 에러, 커널 경고

2. CPU

mpstat

mpstat -P ALL 1   # 코어별 사용률

pidstat

pidstat -u 1      # 프로세스별 CPU
pidstat -d 1      # IO
pidstat -t 1 -p PID  # 스레드 분해

perf

perf top -p PID                # 핫 함수 실시간
perf record -F 99 -p PID -g -- sleep 30
perf report                    # 콜스택 분석
perf stat -e cache-misses,branch-misses -p PID sleep 5

3. 메모리

free

free -h           # available이 진실. free가 아닌

vmstat

vmstat 1          # si/so 스왑, us/sy/id CPU

smem

smem -tk --sort=pss   # PSS 기준 실제 메모리

4. 디스크 / 파일시스템

iostat

iostat -xz 1      # %util 포화도, await 지연

iotop

iotop -oP         # IO 일으키는 프로세스

lsof

lsof -p PID                 # 열려있는 파일
lsof /path/to/file          # 이 파일 누가 열고 있나
lsof -i :8080               # 포트 사용자

fatrace / inotifywait

fatrace | grep -v "^containerd"

5. 네트워크

ss

ss -tlnp              # 리스닝 TCP
ss -s                 # 요약
ss -ti                # 커넥션별 RTT·cwnd

tcpdump

tcpdump -nn -i any 'port 443 and host 10.0.0.5'

bmon / nload

bmon              # 인터페이스별 실시간 그래프

6. 추적 / 디버깅

strace

strace -fp PID -e trace=network,file -s 200
strace -c -p PID sleep 10   # syscall 통계

ltrace

ltrace -p PID     # 라이브러리 호출

7. eBPF 세대 (최신)

bpftrace

# read() 실행 시간 분포
bpftrace -e 'kprobe:vfs_read { @start[tid] = nsecs; }
             kretprobe:vfs_read /@start[tid]/ {
               @ns = hist(nsecs - @start[tid]); delete(@start[tid]); }'

bcc 툴 모음

execsnoop    # 새 프로세스
opensnoop    # 파일 open
biosnoop     # 디스크 IO 이벤트
tcpretrans   # TCP 재전송

원인 추적 순서 (템플릿)

  1. uptime → 부하 수준
  2. vmstat 1, mpstat -P ALL 1 → CPU/메모리/스왑
  3. iostat -xz 1 → 디스크 포화
  4. ss -s, ss -ti → 네트워크 포화/지연
  5. pidstat 1 → 원인 프로세스 특정
  6. perf/bpftrace → 커널/함수 레벨

자주 묻는 질문

컨테이너 안에서 써도 되나?

top/ps는 호스트 네임스페이스. cgroup 기준 실제 사용량은 cat /sys/fs/cgroup/...를 참고. eBPF 도구는 권한 필요(privileged 또는 capabilities).

가장 먼저 배워야 할 3가지?

htop, iostat -xz 1, perf top. 이 셋이면 대부분의 "서버 느림" 1차 진단 가능.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록