top
top 명령어는 리눅스에서 실시간으로 시스템 상태를 확인하는 명령어이다.
CPU 사용률, 메모리 사용량, 실행 중인 프로세스 정보 등을 실시간으로 보여준다.
top 실행하기
# top 실행하기
$ top
위 명령어를 입력하면 시스템의 상태가 실시간으로 갱신되며 화면에 출력된다. (종료하려면 q 입력)
🔎 top 화면 구성 해석하기
📌 상단 요약 정보 (시스템 전체 상태) : Linux
top - 19:53:32 up 1 min, 0 user, load average: 0.54, 0.19, 0.06
- 시간 : 현재 시각
- up : 시스템이 켜진 시간(업타임)
- users : 현재 로그인한 사용자 수
- load average : CPU 작업 대기열 평균 (1분, 5분, 15분 단위) -> 1.00이면 CPU 1개가 100%로 꽉 차있다는 의미
✔︎ 즉, 현재 리눅스 서버는 19:53:32 시각이며, 시스템이 켜진 시간은 1분, 현재 로그인한 사용자 수는 0명, CPU 평균 부하는 54%, 19%, 6%이다.
📌 상단 요약 정보 및 태스크/CPU/메모리 상태 : MacOS
Processes: 528 total, 3 running, 525 sleeping, 2705 threads 19:57:00
Load Avg: 1.99, 2.50, 2.90 CPU usage: 8.40% user, 5.64% sys, 85.95% idle SharedLibs: 688M resident, 142M data, 56M linkedit.
MemRegions: 307218 total, 3956M resident, 707M private, 2431M shared. PhysMem: 15G used (1278M wired, 0B compressor), 946M unused.
VM: 230T vsize, 4921M framework vsize, 0(0) swapins, 0(0) swapouts. Networks: packets: 37883/32M in, 24766/8573K out. Disks: 217510/4878M read, 127757/3757M written.
1) Processes: 528 total, 3 running, 525 sleeping, 2705 threads 19:57:00
- 528 total : 총 528개의 프로세스가 실행 중
- 3 running : 현재 CPU에서 실행중인 프로세스는 3개
- 525 sleeping : 나머지 525개는 대시 상태 (I/O 나 이벤트 대기 등)
- 2705 threads : 모든 프로세스의 스레드를 합친 수
- 19:57:00 : 현재 시각
💡 thread는 프로세스 내부에서 실행되는 작업 단위이고, 일반적으로 하나의 프로세스는 하나 이상의 스레드를 가진다.
2) Load Avg: 1.99, 2.50, 2.90
- Load Average : CPU 작업 큐에 대기중인 평균 프로세스 수로, 각 수치는 1분, 5분, 15분 간격의 평균
- 해석
- 1분 평균 : 1.99
- 5분 평균 : 2.50
- 15분 평균 2.90
- 해석
💡 Mac은 CPU 여러 개일 수 있기 때문에, 예를 들어 CPU 가 4개면 Load Avg가 4를 넘지 않으면 괜찮은 상태라고 볼 수 있다.
3) CPU usage: 8.40% user, 5.64% sys, 85.95% idle
- 8.40% user : 일반 사용자 프로그램이 사용한 CPU 시간
- 5.64% sys : 커널/시스템 호출이 사용한 CPU 시간
- 85.95% idle : 놀고 있는 시간 (CPU가 여유 있음)
💡 idle 이 높을수록 좋음. 여유가 있다는 뜻
4) SharedLibs: 688M resident, 142M data, 56M linkedit.
- SharedLibs는 시스템에서 사용하는 공유 라이브러리 관련 메모리 정보
- 912M resident : 실제 물리 메모리에 올라와 있는 라이브러리 메모리
- 142M data : 데이터 부분
- 82M linkedit : 링크 편집 관련 데이터
- 대부분 시스템/공유 라이브러리에 대한 정보이고, 이 수치는 참고만 하면 된다.
5) MemRegions: 307218 total, 3956M resident, 707M private, 2431M shared.
- 307218 total : 메모리 영역(region)의 총 개수 (각종 코드/데이터 블록 포함)
- 3956M resident : 실제 물리 메모리에 상주 중인 총 용량
- 707M private : 이 프로세스만 단독으로 사용하는 메모리
- 2431M shared : 다른 프로세스들과 공유하는 메모리
💡 Resident 가 많으면 메모리를 많이 쓰는 거고, Private이 많으면 해당 프로세스가 독점적으로 메모리 쓰는 비중이 크다는 뜻
6) PhysMem: 15G used (1278M wired, 0B compressor), 946M unused.
- 15 Used : 현재 사용중인 물리 메모리 (RAM)
- 1278 wired : Wired Memory는 OS나 커널이 반드시 RAM에 고정해둬야 하는 메모리 (절대 swap 불가)
- 0B compressor : 메모리 압추게 사용된 영역 (현재 없음)
- 946M unused : 사용 가능한 여유 메모리
💡 wired가 너무 커지면 커널이 RAM을 많이 차지하고 있다는 의미로, 시스템 자원 여유를 줄이게 됨.
7) VM: 230T vsize, 4921M framework vsize, 0(0) swapins, 0(0) swapouts.
- 230T vsize : 전체 가상 메모리 크기 (굉장히 큰 값이지만 걱정할 필요 없음, 대부분 예약 영역)
- 4921M framework vsize : macOS 프레임워크가 차지한 가상 메모리
- 0(0) swapins/swapouts : 디스크로부터 swap 영역을 읽거나 쓴 횟수 및 크기로, 현재 0 - swqp 이 일어나지 않고 있음
8) Networks: packets: 37883/32M in, 24766/8573K out.
- packets: 37883/32M in : 37883개의 패킷 / 총 32M 수신(in)
- 24766/8573K out : 24766개의 패킷 / 총 8573K 송신(out)
💡 네트워크 트래픽 상태. 네트워크 사용량 확인할 수 있음
9) Disks: 217510/4878M read, 127757/3757M written.
- 217510번 읽기 / 총 4878M 읽음
- 127757번 쓰기 / 총 3757M 기록
💡 디스크 I/O 활동량, 디스크 과부하 원인 추적 시 유용
📌 Task / CPU/Memory 상태 확인: Linux
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 7837.6 total, 7313.0 free, 441.2 used, 233.8 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 7396.4 avail Mem
✔︎ Tasks & CPU 상태
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
- 3 total : 전체 3개 프로세스
- 1 running : 현재 CPU에서 실행중인 프로세스 1개
- 2 sleeping : 대기 중인 프로세스 2개
- 0 stopped/zombie : 정지되거나 종료되었으나 수거되지 않은 프로세스 없음
💡 좀비(zombie) 는 자식 프로세스가 종료되었지만 부모 프로세스가 wait()로 회수하지 않은 경우이다.
✔︎ CPU 사용율
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
- us (user) : 0.0% -> 사용자 프로세스가 거의 CPU를 사용하지 않음
- sy (system) : 0.1% -> 커널/시스템 수준에서 약간의 사용
- id (idle) : 99.8% -> CPU가 거의 놀고 있음 (매우 여유 있음)
- wa (wait) : 0.0% -> I/O 대기 없음
- hi/si : 하드웨어/소프트웨어 인터럽트 거의 없음
✔︎ 메모리 사용량
MiB Mem : 7837.6 total, 7313.0 free, 441.2 used, 233.8 buff/cache
- total : 전체 메모리 7.8GB
- free : 7.3GB 사용가능 (대부분 사용 안하고 있음)
- used : 441MB만 실제로 사용 중
- buffer/cache : 234MB는 디스크 캐시 등으로 일시적으로 사용됨
✔︎ 스왑 영역
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 7396.4 avail Mem
- total : 스왑공간이 1GB 할당되어 있음
- free : 남은 스왑공간
- used : 스왑 사용량
- avail Mem : 애플리케이션이 사용할 수 있는 실질적인 여유 메모리
🔎 top 명령어 사용법
키 | 설명 |
q | top 종료 |
P | CPU 사용량 높은 순 정렬(기본 정렬) |
M | 메모리 사용량 높은 순 정렬 |
T | 실행 시간 순 정렬 |
k | 특정 PID를 입력해 프로세스 강제 종료(kill) |
1 | CPU 코어별 사용량 보기/숨기기 |
h | 도움말 보기(key 설명) |
u | 특정 사용자(user)의 프로세스만 보기 |
f | 컬럼 추가/삭제 (고급 사용자용) |
💡 자주 사용하는 옵션들
# 자주 사용하는 top 옵션들
$ top -u [사용자명] # 특정 사용자의 프로세스만 보기
$ top -p [PID] # 특정 PID만 추적
$ top -n [횟수] # 지정한 횟수만큼 갱신 후 종료
$ top -d [초] # 갱신 간격 설정 (기본 3초)
# 예시
$ top -u root
$ top -d 1
$ top -n 5
$ top -p 1234
✅ 관련 명령어
명령어 | 설명 |
htop | top을 더 보기 쉽게 만든 명령어 (방향키 지원) |
ps aux | 프로세스 스냅샵 보기 (실시간 아님) |
free -m | 메모리 사용량 요약 |
vmstat | CPU, 메모리, I/O 상태 분석 |