리눅스 성능 관리 모니터링 명령어 기능, 옵션, 사용법
본문 바로가기

리눅스 성능 관리 모니터링 명령어 기능, 옵션, 사용법

액트 2024. 12. 17.

리눅스 시스템을 관리하는 데 있어 성능 모니터링은 필수적인 작업입니다. 이 글에서는 리눅스에서 자주 사용되는 성능 모니터링 명령어들을 소개하고, 각각의 기능, 주요 옵션 및 실제 사용 예시를 제공합니다. 이를 통해 시스템 상태를 효과적으로 점검하고 성능 문제를 신속히 진단할 수 있습니다.

1. top - 실시간 시스템 모니터링

기능

top 명령어는 시스템의 전반적인 상태를 실시간으로 보여주는 강력한 도구입니다. CPU 사용률, 메모리 사용량, 실행 중인 프로세스 목록 등을 한눈에 확인할 수 있습니다.

필드 헤더

각 프로세스의 상세 정보를 나타냅니다.

  • PR: 프로세스의 우선순위
  • NI: 프로세스의 nice 값(우선순위 조정)
  • VIRT: 가상 메모리 사용량
  • RES: 실제 메모리 사용량
  • SHR: 공유 메모리 사용량
  • S: 프로세스 상태(R: 실행 중, S: 대기, D: 디스크 대기, Z: 좀비 등)
  • %CPU: CPU 사용률
  • %MEM: 메모리 사용률
  • TIME+: 누적 CPU 시간
  • COMMAND: 실행된 명령어나 프로세스 이름

주요 옵션

  • -d [초]: 화면 갱신 간격을 설정
  • -p [PID]: 특정 프로세스만 모니터링
  • -u [사용자명]: 특정 사용자의 프로세스만 표시
  • -i: 유휴 프로세스 제외

사용 예시

top
top -d 5 # 5초마다 갱신
top -p 1234 # PID 1234인 프로세스만 모니터링

2. vmstat - 가상 메모리 통계

기능

vmstat는 시스템의 프로세스, 메모리, 페이징, I/O 블록, CPU 활동 등 다양한 정보를 제공합니다.

 

필드 헤더

  • 프로세스
    • r: 실행 가능한 프로세스 수 (러닝 또는 런타임 대기 중)
    • b: 인터럽트 불가 상태의 프로세스 수
  • 메모리
    • swpd: 사용 중인 가상 메모리 양
    • free: 사용 가능한 메모리 양
    • buff: 버퍼로 사용되는 메모리 양
    • cache: 캐시로 사용되는 메모리 양
  • 스왑
    • si: 디스크로부터 스왑된 메모리 양 (KB 단위)
    • so: 디스크로 스왑된 메모리 양 (KB 단위)
    • 스왑 활동이 있으면 메모리 부족을 의미할 수 있습니다.
  • I/O
    • bi: 블록 입력량 (KB 단위)
    • bo: 블록 출력량 (KB 단위)
  • 시스템
    • in: 초당 인터럽트 수
    • cs: 초당 컨텍스트 스위치 수
  • CPU
    • us: 사용자 모드에서의 CPU 사용률
    • sy: 시스템 모드에서의 CPU 사용률
    • id: 유휴 시간 비율
    • wa: I/O 대기 시간 비율

주요 옵션

  • -S M: 메가바이트 단위로 출력
  • -d: 디스크 통계 보기
  • -s: 메모리 통계 요약

사용 예시

vmstat 2 5 # 2초 간격으로 5회 출력
vmstat -S M # 메가바이트 단위로 출력
vmstat -d # 디스크 통계 보기

3. sar - 시스템 활동 보고서

기능

System Activity Reporter (sar)는 CPU 사용률, 메모리 사용량, 디스크 I/O, 네트워크 통계 등 다양한 시스템 활동을 기록하고 보고합니다.

주요 옵션

  • -u: CPU 사용률 보기
  • -r: 메모리 사용량 보기
  • -b: I/O 및 전송률 통계 보기
  • -n DEV: 네트워크 통계 보기

사용 예시

sar -u 2 5 # CPU 사용률을 2초 간격으로 5회 출력
sar -r # 메모리 사용량 보기
sar -n DEV # 네트워크 통계 보기

4. iostat - 입출력 통계

기능

iostat는 CPU 사용률과 디스크 I/O 통계를 보여줍니다. 디스크 성능 문제를 진단하는 데 유용합니다.

필드 헤더

  • CPU 통계
    • %user: 사용자 수준에서의 CPU 사용률
    • %system: 시스템 수준에서의 CPU 사용률
    • %iowait: I/O 대기 시간 비율
    • %idle: 유휴 시간 비율
  • 디스크 통계
    • Device: 디스크 장치 이름
    • tps: 초당 전송 요청 수
    • kB_read/s: 초당 읽은 킬로바이트 수
    • kB_wrtn/s: 초당 기록한 킬로바이트 수
    • await: I/O 요청의 평균 대기 시간 (ms 단위)
    • %util: 디스크 사용률 (100%에 가까울수록 디스크가 바쁨을 의미)

주요 옵션

  • -c: CPU 사용률만 표시
  • -d: 디스크 사용률만 표시
  • -x: 확장된 통계 정보 표시

사용 예시

iostat # 기본 출력
iostat -c # CPU 통계만 표시
iostat -d 2 5 # 디스크 통계를 2초 간격으로 5회 출력
iostat -xdNtmzy 1 -p ALL # (x)확장된 통계, (d)디스크 통계만 표시, (N)디스크 이름 출력,
#(t)언제 측정했는지 표시, (m)메가바이트 단위 표시, (z) 제로값 생략,
#(y)각 통계가 시간 순서대로 정렬, (1)1초간격으로 갱신, (p ALL) 모든 디스크 출력
 

5. free - 메모리 사용량 확인

기능

free 명령어는 시스템의 물리적 메모리와 스왑 메모리의 총량, 사용량, 여유량을 보여줍니다.

필드 헤더

  • Mem
    • total: 총 물리적 메모리 양
    • used: 사용 중인 메모리 양
    • free: 사용 가능한 메모리 양
    • shared: 공유 메모리 양
    • buff/cache: 버퍼 및 캐시로 사용되는 메모리 양
    • available: 새로운 프로세스가 사용할 수 있는 메모리 양
  • Swap
    • total: 총 스왑 메모리 양
    • used: 사용 중인 스왑 메모리 양
    • free: 사용 가능한 스왑 메모리 양

주요 옵션

  • -h: 사람이 읽기 쉬운 형태로 출력
  • -s [초]: 지정된 초마다 계속해서 출력
  • -t: 총합 행 추가

사용 예시

free -h # 읽기 쉬운 형태로 출력
free -s 5 # 5초마다 갱신하여 출력
free -ht # 읽기 쉬운 형태로 총합 포함 출력

6. ps - 프로세스 상태 확인

기능

ps 명령어는 현재 실행 중인 프로세스의 스냅샷을 제공합니다. PID, CPU 사용률, 메모리 사용량, 실행 시간 등 다양한 정보를 보여줍니다.

필드 헤더

  • ps aux
    • USER: 프로세스 소유자
    • PID: 프로세스 ID
    • %CPU: CPU 사용률
    • %MEM: 메모리 사용률
    • VSZ: 가상 메모리 사용량
    • RSS: 실제 메모리 사용량
    • TTY: 터미널 타입
    • STAT: 프로세스 상태
    • START: 프로세스 시작 시간
    • TIME: 누적 CPU 시간
    • COMMAND: 실행된 명령어
  • ps -ef
    • UID: 프로세스 소유자 ID
    • PID: 프로세스 ID
    • PPID: 부모 프로세스 ID
    • C: CPU 사용률
    • STIME: 프로세스 시작 시간
    • TTY: 터미널 타입
    • TIME: 누적 CPU 시간
    • CMD: 실행된 명령어

주요 옵션

  • -e: 모든 프로세스 표시
  • -f: 전체 형식으로 표시 (UID, PID, PPID 등)
  • -u [사용자명]: 특정 사용자의 프로세스만 표시
  • -o: 사용자 정의 출력 형식 지정

사용 예시

ps -ef # 모든 프로세스를 전체 형식으로 표시
ps -u root # root 사용자의 프로세스만 표시
ps -eo pid,ppid,cmd,%cpu,%mem # 사용자 정의 출력 형식

7. pidstat - 프로세스 성능 통계

기능

pidstat은 개별 프로세스의 CPU 사용률, 메모리 사용량, I/O 통계 등을 실시간으로 모니터링합니다.

필드 헤더

  • CPU 사용량 보고 (-u 옵션):
    • %usr: 사용자 모드에서의 CPU 사용률
    • %system: 시스템 모드에서의 CPU 사용률
    • %CPU: 전체 CPU 사용률
  • 메모리 사용량 보고 (-r 옵션):
    • minflt/s: 초당 발생한 소프트 페이지 폴트 수
    • majflt/s: 초당 발생한 하드 페이지 폴트 수
    • VSZ: 가상 메모리 사용량
    • RSS: 실제 메모리 사용량
  • I/O 활동 보고 (-d 옵션):
    • kB_rd/s: 초당 읽은 킬로바이트 수
    • kB_wr/s: 초당 기록한 킬로바이트 수
    • iodelay: 블록 I/O 지연 시간

주요 옵션

  • -p [PID]: 특정 프로세스 모니터링
  • -u: CPU 사용률 표시
  • -r: 메모리 통계 표시
  • -d: I/O 통계 표시

사용 예시

pidstat 2 5 # 2초 간격으로 5회 반복 출력
pidstat -p 1234 -u -r # PID 1234의 CPU 및 메모리 통계 표시
pidstat -C "mysql" -d # mysql 프로세스의 I/O 통계 표시

8. netstat - 네트워크 연결 및 통계

기능

netstat은 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등 시스템의 네트워크 상태를 보여줍니다.

필드 헤더

  • Proto: 프로토콜 (tcp, udp 등)
  • Recv-Q: 수신 대기열의 바이트 수
  • Send-Q: 전송 대기열의 바이트 수
  • Local Address: 로컬 주소와 포트
  • Foreign Address: 원격 주소와 포트
  • State: 소켓 상태 (LISTEN, ESTABLISHED 등)
  • PID/Program name: 프로세스 ID와 이름

주요 옵션

  • -a: 모든 연결 및 리스닝 포트 표시
  • -t: TCP 연결만 표시
  • -u: UDP 연결만 표시
  • -n: 주소와 포트 번호를 숫자로 표시
  • -p: 프로세스 ID와 프로그램 이름 표시

사용 예시

netstat -an # 모든 연결을 숫자로 표시
netstat -tulpn # TCP와 UDP 리스닝 포트 및 관련 프로세스 표시
netstat -s # 프로토콜별 통계 표시

결론

리눅스 시스템 관리에서 성능 모니터링은 시스템의 안정성과 성능을 유지하는 데 매우 중요합니다. 위에서 소개한 명령어들을 적절히 활용하면 시스템의 상태를 효과적으로 파악하고 문제를 신속하게 진단할 수 있습니다. 각 명령어의 특성을 잘 이해하고 상황에 맞게 사용하는 것이 중요하며, 정기적인 모니터링과 로그 분석을 통해 시스템 성능을 지속적으로 개선할 수 있습니다.

댓글