본문 바로가기

여러가지/구축 & 설치

[명령어] top

# top

: 프로세스의 상태와 CPU, 메모리 사용률 등 확인

 

확인 가능 목록

- load average

- Tasks: 프로세스 갯수

- %Cpu(s): 전체 CPU 사용률

- 시스템 설치되어 있는 메모리 정보 및 SWAP

- 동작 프로세스

...

 

Hot Key 사용법

ㄱ. 1

: Cpu(s)가 각각의 Cpu로 변환

이를 통해, Cpu 불균형 사용률 확인

 

ㄴ. d

: 인터벌 변경, 기본 3초

 

(사용 예시) 

1 > d > 1 

: 개별 Cpu 1초 단위 출력

 

 

top 명령어 통해 알 수 있는 것

 

1) cpu 사용량

us, sy,ni,id,wa,hi,si,st

 

us: user, 프로세스의 일반적인 CPU 사용량

wa: waiting, I/O 작업 대기 시 CPU 사용량

 

us가 높다?

CPU를 많이 쓰고 있음

따라서, 더 좋은 CPU 가진 혹은 HZ 많은 서버로 변경

 

wa가 높다?

I/O가 많음

따라서, 더 좋은 블록 디바이스 가진 서버로 변경

ex) ec2 -> gp2

 

(+) uptime, 단순 프로세스 개수가 아닌 CPU 많이 사용하는가,  I/O 많은가가 중요

=> vmstat r/b을 통해 판단

 

Q. CPU가 고르게 사용되고 있나요?

Q. 왜 CPU 하나만 잡고있지?

 

 

2) 프로세스의 상태

- - - uptime, load average에 포함 - - -

D: uninterruptible sleep (I/O) - vmstat 명령어의 b

R: running (CPU)

-------------------------------------

S: sleeping, 작업 X

Z: zombie, 좀비, 피해 X, 이슈 가능성

 

프로세스 상태 과정

(1) fork(): 시스템 콜, fork()를 통해서 프로세스 만들어짐

(2) W(wating): CPU 기다림

(3) R  or D

(4) sleep()

(5) exit()

 

좀비 프로세스

: 부모 프로세스가 죽었는데도 살아있는 자식 프로세스

일반적인 상황에서는 커널이 자식 프로세스 강제로 죽임

ex) init 죽는 경우

시스템 리소스를 사용하진 않으나, PID 고갈 일으킬 수 있음

 

# sudo sysctl -a | grep -i pid_max

: 최대 PID 개수

 

<정리>

1) top 명령어 사용해서 프로세스의 상태, CPU, 메모리 사용량 등을 알 수 있음

2) CPU 사용량 중에서

us가 높다면 CPU를 많이 사용하는 워크로드

wa가 높다면 I/O을 많이 사용하는 워크로드

=> 어떤 부하 받고 있는지 확인 가능

3) 멀티코어 환경이라면 모든 CPU를 사용하고 있는지 확인

4) 프로세스 상태에는 D,R,S,Z 있음

 

 

'여러가지 > 구축 & 설치' 카테고리의 다른 글

[명령어] tcpdump  (0) 2024.01.30
[명령어] netstat  (1) 2024.01.30
[명령어] df  (1) 2024.01.28
[명령어] free  (1) 2024.01.28
[명령어] dmesg  (0) 2024.01.23