개요
top 유틸리티는 실행 중인 시스템의 동적 실시간 뷰를 제공하며, 시스템 요약 정보와 커널이 관리하는 작업 목록을 표시합니다. 출력 형식과 정보 종류는 사용자가 직접 설정할 수 있으며, 설정값은 재부팅 후에도 유지됩니다.
top –hv | -abcHimMsS –d 지연시간 –n 반복횟수 –p pid [, pid …]핵심 지표 해석
메모리 관련 필드
| 필드 | 의미 |
|---|---|
| VIRT | 가상 메모리 총량. 프로세스가 요청한 메모리 전체(사용 여부 무관) |
| RES | 실제 점유 중인 물리 메모리. 스왑 제외, 공유 라이브러리 포함 |
| SHR | 공유 메모리. 다른 프로세스와 공유하는 메모리 영역 |
| DATA | 데이터 세그먼트 크기. 실행 중 실제 사용하는 데이터 공간 |
물리 메모리 실제 사용량 계산: RES - SHR
주요 옵션
| 옵션 | 기능 |
|---|---|
| -a | 메모리 할당량 기준 정렬 |
| -b | 배치 모드. 출력을 파일이나 다른 프로그램으로 전달할 때 사용 |
| -c | 명령어 전체 경로 ↔ 프로그램 이름 전환 |
| -d ss.tt | 화면 갱신 간격 설정(초 단위, 소수점 가능) |
| -H | 개별 스레드 표시 토글 |
| -i | 유휴/좀비 프로세스 숨김 |
| -m | VIRT 대신 실제 사용 메모리(RSS+스왑) 표시 |
| -M | 메모리 단위(k/M/G) 자동 변환 |
| -n 숫자 | 최대 반복 횟수 지정 |
| -p PID | 특정 프로세스만 모니터링(최대 20개) |
| -s | 안전 모드 강제 실행 |
| -S | 누적 CPU 시간 모드(자식 프로세스 포함) |
| -u/-U 사용자 | 특정 사용자 프로세스 필터링 |
상호작용 명령어
전역 제어
- Enter/Space : 즉시 화면 갱신
- ?/h : 도움말
- = : 모든 제한 조건 해제
- A : 대체 표시 모드 전환
- d/s : 갱신 주기 변경
- G : 필드 그룹(1~4) 선택
- I : Irix/Solaris CPU 계산 방식 전환
- u/U : 사용자별 필터링
- k : 프로세스 종료(PID 및 시그널 입력)
- r : nice 값 조정
- W : 현재 설정을 ~/.toprc에 저장
- Z : 색상 테마 편집
요약 영역 토글
- l : Load Average/Uptime 표시/숨김
- m : 메모리/스왑 사용량 표시/숨김
- t : 작업/CPU 상태 표시/숨김
- 1 : 개별 CPU 코어 상태 표시/숨김
작업 영역 제어
표시 형식
- b : 굵은 글씨 강조
- x : 정렬 기준 열 강조
- y : 실행 중인 작업 행 조
- z : 컬러/흑백 전환
내용 필터
- c : 명령어 경로 ↔ 이름 전환
- H : 스레드 표시 토글
- S : 누적 시간 모드 토글
- u : 특정 사용자 작업만 표시
- i : 유휴 프로세스 숨김
- n/# : 최대 표시 작업 수 설정
정렬 제어
- </> : 정렬 기준 열 좌/우 이동
- f/F : 정렬 필드 선택 화면
- M : %MEM 기준 정렬
- N : PID 기준 정렬
- P : %CPU 기준 정렬
- T : TIME+ 기준 정렬
- R : 정렬 방향(오름/내림차순) 전환
출력 해석
top - 14:32:10 up 5 days, 3 users, load average: 0.52, 0.48, 0.45
Tasks: 285 total, 1 running, 284 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.2 us, 1.0 sy, 0.0 ni, 95.5 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7822.4 total, 2104.2 free, 3896.5 used, 1821.7 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3567.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1523 dbuser 20 0 892124 45230 12840 S 6.3 0.6 2:15.42 mysqld
2891 webusr 20 0 1256m 89012 23410 S 4.1 1.1 0:45.18 nginx
456 root 20 0 15232 1840 936 R 0.7 0.0 0:00.09 htop요약 영역 상세
| 영역 | 항목 | 설명 |
|---|---|---|
| 시스템 부하 | top - 14:32:10 | 현재 시각 |
| up 5 days | 시스템 가동 시간 | |
| 3 users | 로그인 사용자 수 | |
| load average | 1/5/15분 평균 실행 큐 길이 | |
| 작업 상태 | Tasks: 285 total | 총 프로세스 |
| 1 running | 실행 중 | |
| 284 sleeping | 대기 중 | |
| 0 stopped | 중지됨 | |
| 0 zombie | 좀비 상태 | |
| CPU 사용률 | us | 사용자 공간 프로세스 |
| sy | 커널 공간 프로세스 | |
| ni | nice 값 조정된 프로세스 | |
| id | 유휴 | |
| wa | I/O 대기 | |
| hi | 하드웨어 인터럽트 | |
| si | 소프트웨어 인터럽트 | |
| st | 가상화 환경에서 호스트가 강탈한 시간 |
작업 영역 필드
| 필드 | 설명 |
|---|---|
| PID | 프로세스 식별자 |
| PPID | 부모 프로세스 ID |
| RUSER/UID/USER | 실제/유효 사용자 식별 정보 |
| TTY | 제어 터미널 |
| PR | 스케줄링 우선순위 |
| NI | nice 값(음수가 높은 우선순위) |
| %CPU/%MEM | CPU/물리 메모리 사용 비율 |
| TIME+/TIME | 누적 CPU 사용 시간(1/100초/초 단위) |
| S | 상태: D(중단불가수면), R(실행), S(수면), T(추적/중지), Z(좀비) |
| COMMAND | 실행 명령어 또는 프로그램 이름 |
| WCHAN | 널 대기 함수(수면 중인 경우) |
| nFLT | 메이저 페이지 폴트 횟수 |
| nDRT | 디스크 기록 대기 중인 더티 페이지 수 |
실전 활용
특정 프로세스 모니터링
# PID 1234, 5678만 추적, 5초 간격, 10회 반복
top -p 1234 -p 5678 -d 5 -n 10백그라운드 성능 기록
# 배치 모드로 30초간 샘플링하여 로그 저장
top -b -d 6 -n 5 > /var/log/perf_$(date +%Y%m%d%H%M).log메모리 사용 상위 프로세스 파악
# 시작 시 메모리 기준 정렬
top -a
# 또는 실행 중 M 키 입력확장 지식
CPU 사용률 한계
단일 프로세스는 단일 코어 기준 최대 100%를 소비하나, 다중 코어 환경에서는 이론적으로 100% × 코어 수까지 도달 가능합니다. 예를 들어 8코어 시스템에서는 개별 프로세스가 최대 800%까지 기록될 수 있습니다.
스왑 사용의 의미
스왑 영역이 활발히 사용되고 있다면 물리 메모리가 부족하다는 신호입니다. 다만 스왑에 캐싱된 데이터(cached)는 실제 메모리 부족과는 구별해야 합니다.