# 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 |