리눅스 성능 관리 모니터링 명령어 기능, 옵션, 사용법
리눅스 시스템을 관리하는 데 있어 성능 모니터링은 필수적인 작업입니다. 이 글에서는 리눅스에서 자주 사용되는 성능 모니터링 명령어들을 소개하고, 각각의 기능, 주요 옵션 및 실제 사용 예시를 제공합니다. 이를 통해 시스템 상태를 효과적으로 점검하고 성능 문제를 신속히 진단할 수 있습니다.
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 # 프로토콜별 통계 표시
결론
리눅스 시스템 관리에서 성능 모니터링은 시스템의 안정성과 성능을 유지하는 데 매우 중요합니다. 위에서 소개한 명령어들을 적절히 활용하면 시스템의 상태를 효과적으로 파악하고 문제를 신속하게 진단할 수 있습니다. 각 명령어의 특성을 잘 이해하고 상황에 맞게 사용하는 것이 중요하며, 정기적인 모니터링과 로그 분석을 통해 시스템 성능을 지속적으로 개선할 수 있습니다.
'IT > Linux' 카테고리의 다른 글
Windows 11 숨겨진 설정을 간편하게 관리하는 도구 소개 - TweakNow WinSecret for Windows 11 (0) | 2024.11.20 |
---|---|
리눅스 시그널 번호 (0) | 2024.11.14 |
리눅스 standalone과 inetd 방식의 차이점 (0) | 2024.11.14 |
CentOS 'Could not resolve host: mirrorlist.centos.org; Name or service not known' 오류 해결 방법 (0) | 2024.09.23 |
Zabbix 에이전트 설치 방법: Rocky Linux, CentOS 가이드 (0) | 2024.08.29 |
댓글