서버 모니터링을 하다가, Load Average 수치에 대한 문제가 생겼고 해당 수치가 무엇인지 정확하게 알기 위해서 조사한 내용들을 공유해보도록 하겠습니다.
Load average 정의
얼마나 많은 process가 R(Running) 혹은 D(Uninterruptible waiting) 상태인지를
1분, 5분, 15분 마다 평균으로 보여주는 값입니다.
- R(Running) : CPU에서 실행 중이거나 실행 가능한 상태
즉, run queue에 있는 R상태의 Process들의 개수
- D(Uninterruptible waiting) : I/O 대기하는 상태로 다른 어떤 일도 할 수 없는 상태
즉, wait queue에 있는 D상태의 Process들의 개수
Load Average가 높다는 의미는 많은 프로세스가 현재 실행 중이거나, 네트워크나 디스크 작업을 처리하기 위한 대기상태에 있다는 것입니다.
CPU Core별 수치 해석
Load Average 값은 CPU의 코어수에 따라서 숫자의 의미가 달라집니다.
각 CPU 코어가 100% Load가 발생할 경우 아래와 같은 수치로 표현이 됩니다.
- 1 코어는 값 1
- 2 코어는 값 2
- 4 코어는 값 4
확인 방법 (cpu, 수치)
load average : uptime
더 자세한 정보 : w
cpuinfo에 대한 전반적인 정보 : cat /proc/cpuinfo
cpu core 갯수 요약 : grep 'model name' /proc/cpuinfo | wc -l
vmstat ( virtual memory statics)
vmstat은 현재 메모리와 CPU의 Utilization을 확인할 수 있는 도구입니다.
- r : 실행되기를 기다리거나 실행 중인 프로세스 개수 (CPU 리소스 부하)
- b : uninterruptible sleep 상태의 프로세스, i/o 대기열에 있는 프로세스 개수 (I/O 부하)