리눅스 top 명령어(CPU, 메모리 점유율 확인)

리눅스 top 명령어는 구동 중인 OS의 상태를 보여주는 명령어이며 table of processes의 뜻을 가지고 있습니다. 총 메모리 사용량, CPU 사용량 등을 보여주며 각 프로세스의 구체적인 메모리와 CPU 사용량을 개별적으로 확인할 수 있습니다.

  • top 명령어
  • 리눅스 서버의 메모리와 CPU 사용량 등의 시스템을 확인할 수 있는 명령어
  • 어떤 리소스가(CPU, RAM, 디스크 I/O)가 고갈되었는지 파악
  • 프로세스 명령어
  • 위치: /usr/bin/top

Ⅰ. 리눅스 top 명령어 기본 사용

top 명령어는 대부분 옵션 없이 사용하지만 일반적인 명령어와 동일하게 기본 사용은 옵션과 명령 인자로 이루어져 있습니다.

top -[옵션] [명령 인자]

1. top 명령어 기본 옵션

2. top 명령어 옵션 활용

  • 실시간 출력으로 7번 출력
 top -b -n7
  • 실시간 출력으로 7번 출력한 내용을 top_output 파일로 리디렉션
 top -b -n7 > top_output
  • 출력으로 리디렉션을 하더라도 화면에 출력하지 않기 때문에 화면에 출력하려면 tee 명령어와 같이 사용합니다.
 top -b -n7 | tee top_output

Ⅱ. top 명령어

  • 기본 명령어 출력 화면
top - 12:55:01 up 22:47,  1 user,  load average: 0.06, 0.03, 0.01
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st
MiB Mem :   1760.5 total,   1058.7 free,    530.2 used,    331.2 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1230.3 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                        
    740 nobody    20   0 1079368  10796   5592 S   0.3   0.6   0:10.35 httpd                                          
   4005 root      20   0       0      0      0 I   0.3   0.0   0:01.50 kworker/0:0-events                             
      1 root      20   0  103444  12844   9796 S   0.0   0.7   0:05.55 systemd                                        
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd                                       
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                         
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                     
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq                                   
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns                                          
      8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri                    
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq                                    

1. top 명령어 영역 설명

1.1 top 영역

uptime 명령어에서 나오는 옵션과 동일한 정보를 확인할 수 있습니다.

리눅스 uptime 명령어 설명
top - 14:08:25 up 38 days, 8:02,  1 user,  load average: 1.70, 1.77, 1.68                               
  • load average: 평균 로드 값은 총 CPU 코어 1개 당 1.0 100% 사용이며, 예를 들어 4코어일 경우 CPU 자원이 고갈된 것이 아님을 알 수 있습니다.

1.2 tasks 영역

tasks 영역에서는 전체 기동 중인 total, running, sleeping, stopped, zombie 5가지의 프로세스 상태를 확인할 수 있습니다. 프로세스는 I/O 기반의 업무를 수행하며, 업무 수행 중에 CPU는 idle 타임(유휴 시간)에 들어갑니다.

  • tasks: 현재 CPU에 의해 실행 중인 Process들의 상황을 확인
  • total: 가동 중인 전체 프로세스 수
  • run: 실행 중인 프로세스 수
  • sleep: 유휴상태의 프로세스
  • stopped:정지된 프로세스
  • zombie: 좀비 프로세스
  • kill 명령어로 강제 종료해도 무방함.
  • 좀비 프로세스
  • 대부분의 프로세스는 부모 프로세스(root)가 죽으면 자식 프로세스도 자동 종료되지만 자식 프로세스가 남아 있는 경우를 좀비 프로세스라고 함.
  • 좀비 프로세스가 많아지면 시스템이 느려지는 원인 중 하나가 될 수 있음.
  • 시스템 재부팅 시 좀비 프로세스는 자동 제거.

1.3  Cpu(s): CPU 정보 확인

Cpu(s) 라인은 CPU가 현재 하고 있는 일에 대한 정보를 제공합니다. 3번째 라인에서 top 명령어로 cpu 사용률 확인하기를 할 수 있습니다.

  • us: user CPU time
  • 사용자 공간에서 실행된 CPU 비중
  • nice가 적용되지 않은 사용자 프로세스가 소비한 CPU 사용량을 시간의 비율로 나타냄.
  • sy: system CPU time
  • 시스템 자체에서 사용하는 CPU사용률
  • 커널과 커널 프로세스의 CPU 사용량을 시간의 비율로 보여줌.
  • ni: nice CPU time
  • nice 정책에 의해 사용하는 CPU 사용률
  • nice를 적용한 프로세스가 있을 경우 해당 프로세스의 CPU 사용량을 시간의 비율로 보여줌.
  • id: cpu idle time
  • CUP가 사용되지 않는 유휴 상태의 비율.
  • 느려진 시스템에서 이 수치가 높게 나타난다면 시스템이 느려진 원인이 CPU 부하 때문이 아니라는 것을 뜻함.
  • wa: I/O wait
  • CPU가 I/O를 기다리면서 소비한 시간의 비율을 나타낸 것.
  • 느려진 시스템의 원인을 찾을 때 중요한 지표이며, 지표가 낮으면 원인을 찾을 때 디스크 혹은 네트워크 I/O를 확실하게 배제할 수 있기 때문.
  • hi: hardware interrupts
  • 하드웨어 인터럽트를 제공하는데 CPU가 소비한 시간의 비율을 나타낸 수치
  • si: software interrupts
  • 소프트웨어 인터럽트를 제공하는데 CPU가 소비한 시간의 비율을 나타낸 수치
  • st: steal time
  • 가상 머신(VM)을 실행 중일 경우 이 수치는 가상 머신을 위해 다른 task에서 사용된 CPU 사용량에 대한 시간의 비율을 나타낸 수치

리눅스에서 nice 및 renice 명령어는 실행 중인 프로세스의 우선 순위를 조정하는데 사용되며, 시스템 리소스가 다른 작업에 할당되는 방식을 제어할 수 있습니다.

프로세스 우선순위 지정(nice(or niceness) 및 renice)

1.4  메모리 정보

  • MiB Mem
  • 할당 된 메모리 영역
  • total
  • 미사용 메모리
  • free
  • 미사용 여유 메모리
  • used 
  • 사용 중인 메모리
  • buff/cache 
  • 버프와 캐시는 버퍼된 메모리와 캐시 메모리
  • buff는 buffers의 약자이며 커널 버퍼에서 사용되는 메모리
  • cache는 디스크의 페이지 캐시로써 읽은 데이터를 참조
  • MiB Swap
  • 디스크에서 할당된 Swap 메모리 영역
  • 메모리 사용량이 가득 찼을 때 사용
  • 디스크 영역에서 생성되어 RAM 영역에 비해 느린 속도를 가짐.
  • total
  • 미사용 Swap 메모리
  • free
  • 미사용 Swap 메모리
  • used 
  • nice 정책에 의해 사용하는 CPU 사용률
  • avail mem
  • 유휴 상태(available)의 메모리(스왑 메모리 아님)
버퍼와 캐시 차이 : 버퍼는 데이터를 일시적으로 저장하는 공간을 나타내며, 캐시는 데이터를 더 빠르게 제공하기 위한 용도입니다.

완충 장치라는 사전적인 의미를 가진 Buffer에서 알 수 있듯이 버퍼는 데이터를 일시적으로 저장하는 공간을 나타내며, 주로 입출력(I/O) 작업에서 사용되며, 데이터를 한 곳에서 다른 곳으로 전송하는 동안 임시로 데이터를 저장하는 데 활용됩니다. 버퍼는 데이터를 모아서 한 번에 전송함으로써 효율성을 높이는 역할을 하며, 메모리를 회수할 때에는 버퍼에 저장된 데이터가 전송이 완료 후 발생합니다.

캐시는 주로 CPU나 메모리와 같이 빠른 속도의 장치에서 느린 속도의 장치로부터 데이터를 더 빠르게 제공하기 위한 용도로 사용되며, 캐시는 주로 읽기 연산에 대한 성능 향상을 위해 사용됩니다. 이미 읽은 데이터를 캐시에 저장해두어 나중에 동일한 데이터를 요청할 때 더 빠르게 제공할 수 있도록 합니다. 캐시에 저장된 데이터는 언제든지 필요에 따라 재사용될 수 있습니다.

1.5  top 프로세스의 필드 항목

프로세스(process) ID는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말합니다.

프로세스를 실행시킨 사용자 ID 

프로세스의 우선순위(priority)

NI: nice 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.

  • 가상 메모리 크기(Virtual Memory Size), 키로바이트(Kib)
  • 가상 메모리의 사용량(SWAP+RES)
  • 상주 메모리 크기(Resident Memory Size) – 키로바이트(Kib)
  • 현재 프로세스가 사용하고 있는 물리 메모리 양

상주 메모리는 스왑을 제외한 VIRT의 하위 집합입니다.

  • 공유 메모리 크기 (Shared Memory Size), 키로바이트(KiB)
  • 다른 프로세스와 공유하고 있는 공유 메모리의 양

공유 메모리는 다른 프로세스에서 사용할 수 있는 RES(상주 메모리)의 하위 집합니다.

  • 프로세스 상태(Stat)
    • R(Runable): 실행 대기 상태
    • S(Sleeping): 수면 상태
    • D(in Disk wait) 입·출력을 기다리는 상태
    • T(sTopped): 멈춰 있거나 흔적이 남아 있는 상태
    • Z(Zombie): 좀비 프로세스
  • CPU 사용률
  • 메모리 사용률
    • 작업에 사용된 실제 메모리 양
  • 작업이 시작된 이후 사용한 총 CPU 시간을 의미
  • 명령어 이름 또는 명령어 라인
    • 명령어 또는 관련 프로그램의 이름이 표시됨.

Ⅲ. top 명령어 실행 후 옵션

Similar Posts