gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Tools & Command

[Linux command] top 명령어를 통한 시스템 성능 모니터링

gbmin 2023. 7. 6. 10:39

리눅스 시스템을 관리할 때 가장 기본적이고 많이 사용되는 명령어 중 하나이다. top 은 시스템 성능을 실시간으로 시스템을 확인하고 분석할 수 있는 모니터링 할 수 있는 도구이다. top 명령어 사용 법과 옵션 및 활용법에 대해서 정리하였다.


[목차]

1. top 명령어 의 기본 사용법

2. 자주 사용 되는 top 명령어 옵션 및 사용 예시

3. top 명령어를 이용한 모니터링 팁


1. top 명령어 의 기본 사용법

top 명령어를 입력하면, 그 화면은 두 개의 섹션으로 나뉜다. 각 영역은 요약 영역과 상세 영역으로 요약 영역은 시스템의 전체 상태를 일반적으로 보여주며, 상세 영역은 개별 프로세스에 대한 정보를 제공한다.

top 화면

요약 영역

  • top: 현재 시간, 시스템이 가동된 기간, 로그인한 사용자의 수, 평균 부하(load average)를 표시한다.
  • tasks: 총 작업, 실행 중인 작업, 중지된 작업, 존재하지만 현재 중지된 작업, 총스레드의 수를 표시한다.
  • cpu: 사용자 프로세스, 시스템 프로세스, 낮은 우선순위의 프로세스, 미사용 CPU 시간, IO 대기, 하드웨어와 소프트웨어 인터럽트를 표시한다.
  • memory: 사용 가능한 총 메모리, 사용 중인 메모리, 버퍼, 캐시 크기를 표시한다.


상세 영역

  • PID: 프로세스 ID
  • USER: 프로세스를 실행하는 사용자 이름
  • PR: 프로세스의 우선순위
  • NI: nice 값, 프로세스 스케줄링 우선순위를 조정하는 데 사용
  • VIRT: 가상 메모리 사용량
  • RES: resident memory, 프로세스가 사용하는 비스왑 물리 메모리
  • SHR: 공유 메모리 크기
  • S: 프로세스 상태
    • D (Uninterruptible Sleep): 프로세스가 작업을 기다리는 동안 표기 되는 상태 시그널(signal)에 응답 없음
    • R (Running or Runnable): 프로세스가 실행 중이거나 실행 가능한 상태(Runnable)를 의미한다.
    • S (Interruptible Sleep): 프로세스가 어떤 조건을 기다리고 있는 상태. 조건이 만족되면 시스템은 프로세스 작업을 재시작한다.
    • T (Stopped or Traced): 프로세스가 중지되었거나 추적(traced) 중인 상태를 의미한다.
    • Z (Zombie): 프로세스가 종료되었지만, 그 정보가 아직 부모 프로세스에 의해 회수되지 않은 상태를 의미한다.
      이러한 '좀비 프로세스'는 시스템 리소스를 사용하지 않지만 프로세스 테이블에서는 공간을 차지하고 있다.
  • %CPU: 프로세스가 사용하는 CPU 비율
  • %MEM: 프로세스가 사용하는 메모리 비율
  • TIME+: 프로세스가 CPU를 사용한 총 시간 - COMMAND: 프로세스를 시작하는 데 사용된 명령

 

 

2. 자주 사용 되는 top 명령어 옵션 및 사용 예시

top 명령어는 다양한 옵션을 지원하며, 이들은 특정 정보에 초점을 맞추거나 출력을 사용자 정의하는 데 사용된다.

-b (Batch mode): 스크립트나 파일로 출력을 리디렉션 할 때 유용
자동화 모니터링 스크립트를 작성할 때 특정 조건에서 발생된 프로세스를 확인하기 위해 유용하게 사용될 수 있다.

top -b > top-output.txt

 

-d (Delay): 업데이트 사이의 지연시간을 설정.(기본값은 3초)

top -d 1

 

-p (PID): 특정 PID의 프로세스만 모니터링.

top -p 15800

 

-u (User): 특정 사용자의 프로세스만 표시.

top -u root

 

-i (Idle): CPU를 사용하지 않는 프로세스를 제외하고 표시

top -i ()

 

 

3. top 명령어를 이용한 모니터링 팁

시스템 상황은 모두 다르기 지만 프로세스의 상태를 기준으로 모니터링하는 방법은 대부분 비슷하다.

 

부하의 기준을 잡는다.

시스템 부하를 파악하는 데 top 명령어가 기본이 되며 매우 유용하다. top 출력의 첫 번째 행에 표시되는 load average를 확인하여 시스템의 평균 부하를 파악할 수 있다.

 

부하 프로세스를 찾는다

부하가 발생한 경우 PID, '%CPU', '%MEM' 칼럼을 주시하면 사용률이 높은 프로세스를 쉽게 파악할 수 있다.

 

시스템 성능 최적화

CPU와 메모리 사용률이 높은 프로세스를 파악하여 해당 프로세스를 최적화하거나 필요에 따라 종료할 수 있다.

이러한 방법을 통해 리눅스 시스템 모니터링과 성능 최적화를 진행할 수 있다.


top 명령어는 리눅스 시스템 관리에서 가장 기본이며 중요한 도구 중 하나로, 그 기능과 활용법을 잘 이해하고 사용하는 것이 시스템 성능을 효과적으로 관리하는 데에 큰 도움이 될 수 있다.