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

공정위 광고 문구 Ver 2.0

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

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

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

  • ps 명령어(프로세스 명령어)

    ps 명령어는 현재 실행 중인 프로세스를 출력하는 명령어입니다. 1. ps 명령어 옵션 ps에서 주로 사용되는 명령어입니다. 기본 사용 옵션은 아래와 같습니다. 2. ps -ef 명령어 ps -ef 명령어는 모든 프로세스를 포멧 리스트로 출력해 줍니다. 2.1 출력 필드 ps 출력 필드 기본 설명입니다. 3. ps -aux 사용 3.1 ps -aux의 필드 4. 프로세스 상태…

  • [Linux] ip 명령어 : 네트워크 인터페이스 및 설정 관리

    ip 명령어는 리눅스에서 네트워크를 관리할 때 사용되는 주요 도구로, 다양한 네트워크 작업을 수행할 수 있습니다. ip 명령어는 네트워크 인터페이스의 상태를 확인하거나 활성화 및 비활성화 할 수 있으며, IP 주소를 확인하거나 수동으로 추가 및 삭제하는 작업도 가능합니다. 또한 라우팅 테이블을 조회하고 경로를 추가하거나 제거하는 등의 라우팅 관리, ARP 테이블 확인 및 수정, 터널링 설정…

  • 리눅스 tree 명령어

    tree 명령어는 디렉토리 안의 파일과 디렉토리를 나무 형태로 출력하는 명령어입니다. 디렉토리 구성을 파악하는데 유용하며, 하위 디렉토리와 파일이 어떤 구조로 정리되어 있는지 한눈에 확인 가능합니다. 문서화 및 시스템 분석 등에 활용됩니다. ✅ tree 명령어 기본 사용 방법 ✅ tree 옵션 ✅ 사용 예시 🔲 전체 경로 포함하여 출력: -f 기본 대상 폴더의 기본 파일만…

  • [Linux] 다중 명령어 5가지(세미콜론, 파이프, 엠퍼센트..)

    리눅스의 Bash Shell에서 다중 명령어를 사용하는 목적은 하나의 라인에서 여러 명령을 실행할 수 있기 때문입니다. 종류는 ⓐ 세미콜론(;) ⓑ 파이프(|) ⓒ 더블 버티컬바(||) ⓓ 엠퍼센트(&) ⓔ 더블엠퍼센트(&&) 등이 있습니다. 1. 많이 쓰는 다중 명령어 세미콜론(;) 하나의 명령어 라인에서 여러 개의 명령을 실행하며, 처음 명령어 실행의 성공, 실패 여부와 상관 없이 다음 명령이 실행됩니다….

  • 리눅스 서버 시간 동기화: timedatectl(CentOS7 이상)

    리눅스에서 날짜 및 시간 설정이 필요한 이유는 서버 운영 중 시간이 잘못되면, 입력되는 DB데이터, 로그 데이터, 웹 서버에 접속한 기록 등의 시간이 맞지 않는 경우가 발생할 수 있기 때문입니다. 리눅스 서버 시간 동기화를 사용하는데 있어 OS는 두 개의 시계를 가지고 있습니다.시스템 시계(소프트웨어 시계), 하드웨어 시계(실시간 시계, BIOS 시계)입니다. ✅ 리눅스 서버 시간 동기화:…

답글 남기기

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

Prove your humanity: 0   +   3   =