리눅스 top 명령어 심층 분석

개요

top 유틸리티는 실행 중인 시스템의 동적 실시간 뷰를 제공하며, 시스템 요약 정보와 커널이 관리하는 작업 목록을 표시합니다. 출력 형식과 정보 종류는 사용자가 직접 설정할 수 있으며, 설정값은 재부팅 후에도 유지됩니다.

top –hv | -abcHimMsS –d 지연시간 –n 반복횟수 –p pid [, pid …]

핵심 지표 해석

메모리 관련 필드

필드의미
VIRT가상 메모리 총량. 프로세스가 요청한 메모리 전체(사용 여부 무관)
RES실제 점유 중인 물리 메모리. 스왑 제외, 공유 라이브러리 포함
SHR공유 메모리. 다른 프로세스와 공유하는 메모리 영역
DATA데이터 세그먼트 크기. 실행 중 실제 사용하는 데이터 공간

물리 메모리 실제 사용량 계산: RES - SHR

주요 옵션

옵션기능
-a메모리 할당량 기준 정렬
-b배치 모드. 출력을 파일이나 다른 프로그램으로 전달할 때 사용
-c명령어 전체 경로 ↔ 프로그램 이름 전환
-d ss.tt화면 갱신 간격 설정(초 단위, 소수점 가능)
-H개별 스레드 표시 토글
-i유휴/좀비 프로세스 숨김
-mVIRT 대신 실제 사용 메모리(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 average1/5/15분 평균 실행 큐 길이
작업 상태Tasks: 285 total총 프로세스
1 running실행 중
284 sleeping대기 중
0 stopped중지됨
0 zombie좀비 상태
CPU 사용률us사용자 공간 프로세스
sy커널 공간 프로세스
ninice 값 조정된 프로세스
id유휴
waI/O 대기
hi하드웨어 인터럽트
si소프트웨어 인터럽트
st가상화 환경에서 호스트가 강탈한 시간

작업 영역 필드

필드설명
PID프로세스 식별자
PPID부모 프로세스 ID
RUSER/UID/USER실제/유효 사용자 식별 정보
TTY제어 터미널
PR스케줄링 우선순위
NInice 값(음수가 높은 우선순위)
%CPU/%MEMCPU/물리 메모리 사용 비율
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)는 실제 메모리 부족과는 구별해야 합니다.

태그: linux TOP process-management System-Monitoring memory-management

6월 27일 16:24에 게시됨