리눅스 Load Average란?
리눅스에서 top 명령어 또는 uptime 명령어로 1분, 5분, 15분의 시스템의 평균 로드 지표인 Load Average를 통해 평균 부하 정도를 알 수 있습니다. Load Average는 CPU에 어느 정도의 일이 쌓이는지를 나타내는 것으로 정의 내릴 수 있습니다.
✅ 리눅스 Load Average의 이해
~]# uptime
10:36:12 up 5 days, 17:35, 1 user, load average: 2.03, 20.17, 15.09
ⓐ현재 시간|ⓑ부팅 후 5일 17:35동안 가동| ⓒ시스템에 로그인한 사용자 수|ⓓ최근 1분,5분,15분동안 시스템의 평균 부하율
세 개의 숫자 (2.03, 20.17, 15.09)는 시스템에서의 1분,5분,15분 동안의 평균 부하를 나타 냅니다. 1코어의 단일 CPU 환경일 경우 평균 부하 1이 의미하는 것은 100% CPU를 사용하고 있다는 것을 의미합니다. 2코어일 경우는 50%, 4코어일 경우 25%를 사용하는 것을 의미합니다.
결국 단일 CPU 환경에서 부하 1과 4개의 CPU에서 부하가 4라는 것은 자원을 사용하는 양적인 측면에서 동일한 것으로 이해할 수 있습니다.
✅ 평균 부하가 높은 것의 의미
Load Average의 평균 부하가 높다는 것은 “어떤 이유로 높은가?”로 원인을 찾을 수 있습니다.
시스템의 주요 리소스는 CPU, RAM, 디스크 I/O 3가지와 네트워크를 볼 수 있으며, 서버에서의 문제 발생이 원인일 경우 시스템 엔지니어의 경우 RAM, 또는 CPU를 추가할지를 고민할 수 있고, 개발자의 경우 새로 수정한 코드가 느리게 실행되는지 체크를 고려할 수 있습니다.
✅ 부하의 원인 파악하기
구체적인 부하의 원인을 파악하기 위해 vmstat 명령어를 활용할 수 있습니다.
vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1077988 3124 321444 0 0 2 1 47 134 0 0 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 47 133 0 0 100 0 0
1 0 0 1077988 3124 321444 0 0 0 0 48 139 0 0 100 0 0
4 0 0 1077988 3124 321444 0 0 0 0 44 122 0 0 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 49 136 0 0 100 0 0
1 0 0 1077988 3124 321444 0 0 0 0 46 126 0 0 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 44 128 0 0 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 46 133 0 0 100 0 0
1 0 0 1077988 3124 321444 0 0 0 0 45 126 0 1 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 48 133 0 0 99 0 0
0 0 0 1077988 3124 321444 0 0 0 0 45 132 0 0 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 46 129 0 0 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 49 135 0 0 100 0 0
0 0 0 1077988 3124 321444 0 0 0 0 46 127 0 0 100 0 0
b 열에 있는 프로세스가 많이 표시되는 경우 I/O 처리 과정의 문제를 체크 해 볼 수 있겠습니다.