[Linux] 리눅스 top 명령어 사용법, 리눅스 CPU 및 메모리 체크하는 법

top 명령어

top 명령어는 리눅스 시스템의 CPU 사용량, 메모리 사용량 등 전반적인 상황을 실시간으로 모니터링할 수 있는 명령어이다. 

 

$top

 

top 명령어 실행 예시
[그림 1] top 명령어 사용 예시

 

터미널에서 top 명령어를 입력하면 [그림 1]과 같이 출력된다. CPU사용량, 메모리 사용량 등을 나타내주며 실시간으로 정보가 업데이트된다.

 

top 명령어를 사용했을 때 나오는 결과에 대해 설명하자면 다음과 같다.

 

 

요약 영역

top 요약 영역
[그림 2] 요약 영역

 

 

가장 상단에 출력되는 부분은 요약 영역이다. 말 그대로 다양한 정보를 요약해서 보여준다.

 

 

1. 시스템 시간, Uptime, 유저 세션 수 

시스템 시간, Uptime, 유저 세션 수
[그림 3] 시스템 시간, Uptime, 유저 세션 수

 

가장 왼쪽 위에 시간은 시스템 현재 시간을 나타내고 바로 이어서 OS가 Up(구동)된 시간인 uptime이 출력된다. 예를 들어 [그림 3]는 현재 22시 18분 08초로 OS가 구동된 지 약 8분 정도 되었다. 그 옆에는 현재 접속 중인 유저 세션 수가 나온다. 

 

 

2. 로드 애버리지(Load Average)

 

로드 애버리지(Load Average)
[그림 4] 로드 애버리지

 

로드 애버리지 영역에는 3개의 숫자가 출력된다. 왼쪽에서부터 각각 1분, 5분, 15분 동안의 평균 시스템 부하를 나타낸다.

리눅스에서 부하란 해당 시간에 R(Running) 혹은 D 상태(uninterruptable sleep, I/O 작업 대기)인 프로세스의 개수를 뜻한다.

 

예를 들어 싱글코어에서 1.00이란 값이 나온다면 CPU를 100%로 사용할 수 있을 만큼 사용하고 있다고 볼 수 있고, 2.12 란 값이 나온다면 처리할 수 있는 양의 112%를 초과해 오버로딩 되어 부하가 걸리고 있다는 것이다. 

 

멀티코어의 경우에는 CPU 코어의 개수로 로드 애버리지를 나눈 후 비슷하게 분석할 수 있다.

 

 

3. Tasks

 

Tasks
[그림 5] Tasks

 

Tasks는 현재 프로세스들의 상태를 출력한다. 

 

프로세스 상태에 대해 잘 모른다면 다음을 참고하자.

 

[운영체제] 프로세스란? 프로세스 메모리 구조, 상태, 스케줄링

프로세스(Process)란? 프로세스는 실행 중인 프로그램(program)을 뜻한다. 그렇다면 프로그램은 무엇인가? 프로그램은 명령어들의 모음을 포함한 디스크에 저장된 파일이다. 프로그램이 실행되면 이

code-lab1.tistory.com

 

 

4. CPU 사용량

CPU 사용량
[그림 6] CPU 사용량

 

%Cpu(s) 는 CPU의 사용율을 출력한다. 총합이 100%이며 각 항목은 다음과 같다.

 

  • us : 유저 영역에서의 CPU 사용율 
  • sy : 커널 영역에서의 CPU 사용율 
  • ni : 프로세스 우선순위 설정에 사용되는 CPU 사용율
  • id : 사용하지 않는 CPU 비율, 
  • wa : I/O 대기 상태의 CPU 사용율
  • hi : 하드웨어 인터럽트에 사용되는 CPU 사용율
  • si : 소프트웨어 인터럽트에 사용되는 CPU  사용율
  • st :Hypervisor VM에서 사용하여 대기하는 CPU 비율

 

 

5. 메모리 사용량

메모리 사용량
[그림 7] 메모리 사용량

MiB Mem 은 RAM의 정보를 출력한다. MiB Swap은 디스크를 메모리처럼 사용하는 Swap 메모리 영역의 정보를 출력한다. 

 

total은 총 메모리 양, free는 사용가능한 메모리 양, used는 사용 중인 메모리 양이다. 

buff/cache는 커널 버퍼와 디스크의 페이지 캐시에 사용되는 메모리 양이다. 즉, I/O에 사용되는 버퍼 메모리이다.

 

 

 

디테일 영역

디테일 영역
[그림 8] 디테일 영역

 

디테일 영역의 각 항목은 다음과 같다.

 

  • PID : 프로세스 ID
  • USER : 프로세스를 시작한 유효한 사용자의  ID\
  • PR : Scheduling Prority, 즉 작업의 우선순위
  • NI : 우선순위에 영향을 주는 값으로 음수이면 우선순위가 높고 양수라면 낮음
  • VIRT : 가상메모리(Virtual Memory) 크기, 프로세스가 사용하고 있는 가상메모리 용량
  • RES : 상주메모리(Resident Memory)  크기, 프로세스가 실제로 사용하고 있는 물리 메모리 용량
  • SHR : 공유메모리(Shared Memory) 크기, 다른 프로세스와 공유하고 있는 공유 메모리 용량
  • S : 프로세스의 상태
    • R : Runnung
    • S : Sleeping
    • I : Idle
    • D : Uninterruptable Sleep
    • T : 작업 제어 신호에 의해 중지됨
    • t : Trace 중 디버거에 의해 중지됨
    • Z : Zombie
  • %CPU : CPU 사용량. 
  • %MEM : 메모리 사용량. 현재 사용한 실제 메모리 양
  • TIME+ : 프로세스가 사용한 CPU 시간. 작업이 시작된 이후 사용한 총 CPU 시간이다.
  • COMMAND : 명령어 이름. 작업을 시작할 때 사용되는 명령어 라인 혹은 프로그램의 이름을 표시

 

 

 

top 명령어 커맨드

 

top 명령어 화면에서 특정 키를 입력해 다양한 커맨드를 실행할 수 있다.

 

 

프로세스 죽이기(kill process)

top k 커맨드
[그림 9] k 커맨드

top 명령어 화면이 실행되고 있을 때 k 키를 누르면 특정 프로세스를 종료할 수 있다. k키를 누른 후 PID를 입력하면 signal을 입력하라고 표시된다. 이때 9(sigkill) 시그널 혹은 15(sigterm) 시그널을 주어 프로세스를 종료할 수 있다.

 

참고)

 

[Linux] SIGTERM과 SIGKILL의 차이, kill -9와 kill -15의 차이

SIGTERM과 SIGKILL 유닉스/리눅스에서 SIGTERM, SIGKILL 시그널이 있다. 둘 모두 어떠한 프로세스를 종료시킨다는 공통점이 있다. 그렇다면 어떤 차이점에는 어떠한 점들이 있을까? SIGTERM SIGTERM은 Singnal +

code-lab1.tistory.com

 

정렬하기

디테일 영역을 다음과 같이 다양한 기준으로 정렬할 수 있다.

 

  • P키 : CPU 사용량으로 정렬
  • M : 메모리 사용량으로 정렬
  • N : PID 순으로 정렬
  • T : Running Time으로 정렬
  • R : 오름차순과 내림차순 토글 변경

 

쓰레드 기준으로 보여주기

쓰레드 기준 정렬
[그림 10] 쓰레드 기준

 

'H'키를 누르면 프로세스가 아닌 쓰레드 기준으로 출력한다. 주의 할 점은 소문자 'h'를 누르면 help 창으로 연결되고, 대문자 'H'를 입력해야 쓰레드 기준으로 바뀐다.

 

정보 바로 업데이트

top 명령어는 정보를 실시간으로 보여주기는 하지만, 약간의 딜레이가 있을 수 있다. 이때 스페이스 바를 눌러주면 화면이 바로 업데이트된다.

 

혹은 처음 top 명령어를 실행할 때 top -d [초 단위] 형식으로 업데이트 시간을 변경할 수도 있다. 

 

 

나가기

'q' 키를 누르면 top 명령어 화면에서 나가진다. 

 

 


참고

 

1. https://www.booleanworld.com/guide-linux-top-command/

2. https://ko.wikipedia.org/wiki/Top_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4) 

3. https://man7.org/linux/man-pages/man1/top.1.html

 

반응형

댓글

Designed by JB FACTORY