[명령어] uptime
# uptime
: 시스템의 가동 시간과 로그인한 사용자 수, Load Average 확인
=> Load Averages: 1분 평균, 5분 평균, 15분 평균 각각 나타낸 것
● Load Averages
: 서버가 받고 있는 부하 평균
즉, 단위 시간(1/5/15분)동안 R과 D 상태의 프로세스 개수
- R: CPU 위주의 작업
- D: I/O 위주의 작업
(+) 부하: 얼마나 일하고 있느냐
ex)
한 개의 CPU, 한 개의 프로세스 => Load Averages = 1
한 개의 CPU, 두 개의 프로세스 => Load Averages = 2, 나눠 씀 (Context Switching)
두 개의 CPU, 한 개의 프로세스 => Load Averages = 1
두 개의 CPU, 두 개의 프로세스 => Load Averages = 2, 각각 씀
즉, Load Averages는 상대적인 값으로 두 서버가 똑같이 1이라고 해도 CPU가 한 개 일 때와 두 개일 때의 의미가 다름
(이슈) Load Average > CPU 개수
=> 현재 처리 가능한 수준에 비해 많은 수의 프로세스가 존재한다는 의미
(+) CPU 개수 확인
# lscpu -e
Q. Load Averages가 높은 이유가 무엇일까?
R 높을 때 - 1) CPU개수 늘리거나(일반적), 2) 스레드 개수 줄이거나
D 높을 때 - I/O 병목 있는 것으로 1) IOPS가 높은 디바이스로 변경하여 더 많이 처리할 수 있도록 하거나(EBS로 교체), 2) 처리량을 줄임
Q. R, C 뭐가 많은지 어떻게 알지?
# vmstat
=> r - R, b - D
<정리>
1) uptime 명령어의 Load Averages 통해 얼마나 많은 부하 받는지 확인
2) CPU개수보다 많은 부하 받고 있다면 vmstat 명령어의 procs(r,b) 칼럼을 통해 어떤 종류의 프로세스 때문인지 확인