본문 바로가기
IT/Linux_리눅스

[Linux] Load Average란? , 리눅스의 uptime, vmstat 명령어로 Load Average 확인하기

by 능보테 2021. 1. 2.
728x90
반응형

안녕하세요 이번 포스팅에서는 Load Average가 무엇인지, 그리고 이를 확인할 때 쓰이는 vmstat 명령어에 대해서 글을 써보겠습니다.

 


0. Load Average 란?

Load Average는 현재얼마나 많은 수의 프로세스가 실행 중 혹은 실행 대기중이냐를 의미하는 수치입니다. Load Average 값이 높으면 여러 프로세스가 실행 중이거나 I/O 등을 처리하기 위해 대기 상태에 있다는 것이고, 낮으면 적은 수의 프로세스가 실행 중이거나 대기 중이라는 의미입니다.
이는 프로세스의 수를 세는 것이기 때문에 CPU Core 수에 따라 수치가 달라질 수 있습니다.

 

 


 

1. CPU Core 수와 프로세스의 관계

아래와 같은 상황을 가정해보겠습니다.

첫 번째 그림의 CPU Core가 1개인 경우와 두 번째 그림의 Cpu Core가 2개인 경우는 둘 다 Load Average 값은 2의 근사값이 나올겁니다. 그렇지만 비슷한 값이어도 두 상황에서의 의미는 다릅니다.

 

첫 번째 경우는 하나의 CPU가 프로세스를 처리하기 때문에 Run Queue에 두 개의 프로세스가 있으며 이 경우에는 한 번에 하나만 실행되기 때문에 실행중이지 않는 프로세스는 대기 상태에 있어야합니다.

 

두 번째 경우는 첫 번째와 똑같이 Run Queue에 두 개의 프로세스가 있지만 서로 다른 CPU안에 있기 때문에 두 개의 프로세스는 동시에 실행될 수 있습니다.

 

두 상황의 차이는 첫 번째는 현재 시스템이 처리할 수 있는 프로세스보다 조금 더 많은 프로세스가 있다는 뜻이고 두 번째는 현재 시스템에 처리 가능한 만큼의 프로세스가 있다는 뜻이라고 해석될 수 있습니다. 그렇지만 Load Average값은 동일한 상태입니다.

 

결론적으로 같은 Load Average 값을 가진다 해도 CPU Core의 갯수에 따라서 완전히 다른 의미와 상황일 수 있습니다.

 

 


 

2. Load Average를 보는 법

uptime 명령을 사용한다면 Load Average 값을 간략하게 볼 수 있습니다.

uptime 명령어를 사용하면 load average: 0.07, 0.02, 0.01 이라고 명시됩니다.
이는 각각 실행중이거나 대기중인 프로세스의 1분, 5분, 15분 마다의 평균값입니다.

 

 


 

3. CPU Bound, I/O Bound와 Load average의 관계

위에서 봤듯이, Load Average는 상대적인 값이 아닌 계산하는 순간을 기준으로 존재하는 실행 상태, 대기 상태의 프로세스 갯수로 계산됩니다.

 

그렇다면 Load Average가 높다는 것은 단순히 CPU를 사용하려는 프로세스가 많다는 것을 뜻하는 것이 아니고, I/O 작업을 대기하는 프로세스가 많을 수도 있다는 의미 또한 내포합니다.

 

결론적으로 Load Average 값만으로는 시스템에 어떤 상태(CPU 또는 I/O)의 부하가 일어나는지 확인하기 어렵다는 뜻이 됩니다.

 

 


 

3.1 부하를 일으키는 프로세스의 종류, 확인방법

부하를 일으키는 프로세스는 크게 두 가지로 나눌 수 있습니다.

 

CPU Bound 프로세스: CPU 자원을 많이 필요로 하는 프로세스
I/O Bound 프로세스: I/O 자원을 많이 필요로 하는 프로세스

 

이를 구분해서 어떤 부하를 일으키는지를 알아내는 것은 중요합니다.
부하의 종류에 따라서 해결 방법이 달라지기 때문입니다.

 

Load Average는 I/O Bound 프로세스로도 높아질 수도 있기 때문에 Load Average가 높다고 해서 단순히 CPU가 더 많은 장비를 사용하는 것으로 해결할 수 없다는 의미입니다.

 

 


 

 

3.2 vmstat 명령으로 부하 종류 확인하기

vmstat 명령어를 사용하면 아래와 같은 결과를 볼 수 있습니다.

위의 그림에서 첫 번째 열의 r과 두 번째 열의 b는 각각

 

r: 실행되기를 기다리거나 현재 실행되고 있는 프로세스의 갯수
b: I/O를 위해 대기열에 있는 프로세스의 갯수

 

를 의미합니다.

 

만약 두 시스템이 같은 Load Average 값을 나타낼 때, vmstat 명령을 사용한다면, 정확이 어느 프로세스들이 부하를 일으키는지 알 수 있습니다.

 


본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.

인용 시 출처와 같이 공개해주세요!

도움이 되셨다면 댓글 또는 공감 부탁드립니다!

728x90
반응형

댓글