리눅스 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

  • 리눅스 which whereis locate: 3가지 위치(경로) 확인 명령어

    리눅스 which와 whereis 명령어 명령어의 위치를 알 수 있는 명령어는 find 명령어를 이용해서 파일을 찾을 수 있지만 find 명령어는 시간이 소요되는 단점도 존재합니다. locate 명령어는 파일명을 빠르게 검색할 때 사용할 수 있습니다. 리눅스 기본 명령어 3가지에 대해 알아 보겠습니다. 목차Ⅰ. 리눅스 top 명령어 기본 사용1. top 명령어 기본 옵션2. top 명령어 옵션 활용Ⅱ….

  • 리눅스 kill 명령어[kill -9 PID]

    리눅스 kill 명령어는 사용 중인 프로세스를 종료하는 명령어입니다. 터미널에서 프로세스에 시그널(Signal)을 보내서 프로세스를 종료합니다. 프로그램이 정지하거나 응답하지 않는 경우 일반적인 종료가 되지 않는 경우 등에 따라 명령어를 실행하게 됩니다. kill process는 사용 시 중요한 시스템 프로세스를 종료 시키면 시스템이 불안정해질 수 있기 때문에 주의해서 사용해야 합니다. 목차Ⅰ. 리눅스 top 명령어 기본 사용1. top…

  • 리눅스 grep 명령어

    리눅스 grep 명령어는 로그 파일과 같은 텍스트 파일과 아스키 파일에서 원하는 문자열을 찾을 때 사용되며, tail과 find 명령어를 파이프(|)와 결합해서 자주 사용하게 되는 명령어입니다. 목차Ⅰ. 리눅스 top 명령어 기본 사용1. top 명령어 기본 옵션2. top 명령어 옵션 활용Ⅱ. top 명령어1. top 명령어 영역 설명Ⅲ. top 명령어 실행 후 옵션✅ grep 명령어 기본 사용법…

  • [Linux] stat 명령어 : 파일&파일 시스템 확인

    리눅스 stat 명령어는 파일 및 파일 시스템의 상태를 보여주는 명령어입니다. 파일에 대한 자세한 정보가 필요할 때 사용합니다. 목차Ⅰ. 리눅스 top 명령어 기본 사용1. top 명령어 기본 옵션2. top 명령어 옵션 활용Ⅱ. top 명령어1. top 명령어 영역 설명Ⅲ. top 명령어 실행 후 옵션✅ stat 명령어 기본 사용 방법 ✅ 명령어 옵션 ✅사용 예시 🔲…

  • [Linux] usermod 명령어

    usermod 명령어는 user modification(사용자 수정)의 약자로 이미 존재하는 사용자 계정의 속성을 변경할 때 사용됩니다. usermod는 사용자의 로그인 이름, UID (사용자 ID), 홈 디렉토리, 로그인 셸, 그룹 등의 속성을 변경할 수 있는 명령어입니다. 목차Ⅰ. 리눅스 top 명령어 기본 사용1. top 명령어 기본 옵션2. top 명령어 옵션 활용Ⅱ. top 명령어1. top 명령어 영역 설명Ⅲ. top 명령어…

  • 리눅스 백그라운드(Back Ground)&포그라운드(Fore Ground): 프로세스 제어하기

    리눅스의 프로세스는 백그라운드(Back Ground)와 포그라운드(Fore Ground) 두 가지의 모드로 작동됩니다. 리눅스 백그라운드 작업을 하는 이유는 일반적인 쉘 명령어를 실행했을 때 프로세스가 종료될 때까지 기다리면서 다른 작업을 하지 못하는 경우가 있기 때문입니다. 목차Ⅰ. 리눅스 top 명령어 기본 사용1. top 명령어 기본 옵션2. top 명령어 옵션 활용Ⅱ. top 명령어1. top 명령어 영역 설명Ⅲ. top 명령어…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 6   +   2   =