Load Average에 대한 분석과 문제점 유추하기

Load Average

Load average란 실행 가능한 상태거나 중단 불가능한 상태에 있는 process의 평균 개수를 의미합니다. 실행 가능한 process란 현재 cpu를 사용하거나 사용을 위해 대기 중인 process고, 중단 불가능한 process는 I/O 접근을 기다리고 있는 process입니다.

Load average의 확인은 uptime 명령어를 통해 할 수 있습니다. Uptime 명령어의 요소는 서버시간, 가동 시간, 현재 접속 사용자 수 , load average입니다. Load average의 값과 core 수가 같을 경우 CPU는 100% 점유 중인 상태라고 볼 수 있습니다.

Load average가 높을 때 가장 먼저 확인해야 할 부분은 I/O wait입니다. 이것은 top 명령어를 통해서 확인이 가능합니다. Load average가 높은 상태에서 wa 값이 높은 경우는 두 가지를 생각해 볼 수 있습니다. 하나는 thrashing 현상이 일어나고 있는 상태이고, 다른 하나는 특정 프로그램에서 I/O 작업을 너무 많이 수행하고 있을 때입니다.

Thrashing 현상이 발생하는 load average와 I/O wait이 높지만 CPU Idle 역시 높은 상태입니다. CPU idle은 top의 id를 통해 확인이 가능합니다. CPU scheduling을 통해서 process가 할당이 될 때, 해당 process가 swap 공간에 있다면, disk I/O 작업을 통해 해당 process를 memory로 swapping 해야합니다. Memory의 용량이 부족할 때 process를 많이 실행할 경우 swapping 작업이 많이 일어나게 되는데 그동안 CPU는 작업을 쉬기 때문에 CPU idle이 늘어나게 됩니다. 이 때, 다른 process는 오랜 시간 동안 대기를 하게 되므로 load average 역시 증가하게 됩니다.

Load average가 높은 상태에서 시스템의 I/O wait이 높고 CPU idle 시간이 낮다면 특정 process가 I/O 연산을 많이 하고 있을 가능성이 있습니다. 따라서, 어떤 process에서 부하가 나타나는지 확인 해야합나다. 이것은 iotop을 통해서 확인이 가능합니다.

Load average가 높은 상태에서, I/O wait이 낮고, CPU idle도 낮다면 단순히 연산 작업이 많은 걸수도 있지만, CPU 발열량이 높아서 생기는 throttling 현상에 의한 것일 수도 있습니다. CPU 발열양이 높아질 경우 내부의 저항이 증가함에 따라 데이터의 이동 속도가 낮아지기 때문입니다. 이 경우 fan에 문제가 있거나, CPU의 thermal paste가 제대로 발려 있지 않거나, 혹은 datacenter 내의 온도가 제대로 관리 되지 않을 때라고 생각합니다. 이것에 대한 확인 /var/log/dmesg를 통해서 알 수 있습니다.

Post Author: Jinn

1 thought on “Load Average에 대한 분석과 문제점 유추하기

    Royal CBD

    (08/03/2020 - 11:19)

    Hey There. I discovered your weblog using msn. This is a very well written article.
    I will be sure to bookmark it and come back to learn extra of your helpful information. Thanks for the post.
    I’ll certainly comeback.

    Here is my website Royal CBD

댓글 남기기

이메일은 공개되지 않습니다.