brunch

You can make anything
by writing

C.S.Lewis

by 이동인 Oct 07. 2019

CPU Load에 대해

About Infra.

CPU의 다양한 지표중에 언뜻 이해하기 어려운 지표가 CPU Load입니다. CPU Usage(사용률)과 CPU Load(부하)는 의미상 비슷해 보이지만 서로 상호 보완적인 정보를 제공합니다. 

CPU 지표 정리에서 CPU에 관련된 지표를 간단하게 정리했지만 CPU Load에 대해 좀더 자세히 설명하도록 하겠습니다. 


CPU Load란 무엇입니까?

CPU Load는 CPU에 실행중이거나 대기중인 작업(프로세스)의 개수를 평균으로 보여주는 값입니다. 예를 들어 CPU에 실행중이거나 대기중인 작업이 있는지 100번 확인했을 때, 2개의 작업이 있었다면 CPU 로드는 0.02로 표시됩니다. 이론적으로 CPU에 항상 실행중인 작업만 있으며 대기중인 작업이 없는 상태의 CPU Load는 1이 됩니다. 때문에 CPU Load는 CPU가 얼마나 잘 사용되고 있는지 확인하는 수단으로 사용 될 수 있습니다. CPU Load는 코어에 비례하며 CPU 코어가 2개 라면 이론적으로 CPU에 항상 실행중인 작업만 있으며 대기중인 작업이 없는 상태의 CPU Load는 2가 됩니다. 코어가 4개면 CPU Load 는 4가 될 수 있습니다. 

CPU의 작업을 순간 값으로 보여주는 것은 의미가 없기 때문에 CPU Load는 시간 동안의 평균값으로 나타냅니다. 와탭의 서버 모니터링에서는 1분, 5분, 15분의 평균값을 보여주고 있습니다. 리눅스에서도 uptime 명령어를 사용하면 CPU Load를 확인할 수 있으며 1분, 5분, 15분의 평균값을 알려주고 있습니다.


CPU 사용률과 CPU Load의 차이

CPU Load는 CPU 사용률로 확인 불가능한 정보를 알려줍니다. 예를 들어 같은 작업을 하는 두 대의 서버가 모두 100%의 CPU 사용률을 보여주고 있습니다. 하지만 한 대의 서버는 작업을 완료하는데 5초가 걸리며 다른 한 대의 서버는 30초 후에 작업을 완료합니다. 이때 CPU Load는 작업에 30초가 걸린 서버의 값이 더 높게 나타나게 됩니다. CPU 사용률은 뒤에 남겨진 작업과 상관없이 100%의 값만으로 보여지지만 CPU Load는 남아있는 작업까지 표시해 주는 지표입니다 .


CPU Load의 임계값

CPU 코어가 하나인 경우의 CPU Load의 임계값은 0.7정도를 잡고 있습니다. 이는 CPU Load의 값이 평균값이기 때문입니다. 예를 들어 CPU의 작업을 100번 확인하는 동안 30번은 0개의 작업이 있어고 40번은 1개의 실행중인 작업 그리고 30번은 1개 실행중인 작업과 1개의 대기중인 작업이 있었을 수 있습니다. 이렇게 평균의 의미를 고려하여 CPU Load가 코어 당 0.7정도의 값이라면 대기중인 작업이 없는 원활한 상태라고 생각합니다.  CPU 코어가 2개라면 1.4를 원활한 상태라고 볼 수 있습니다. 이는 일반론적인 이야기이며 실제 서비스의 운영과정에서 적절한 값을 체크해 봐야 합니다. 


마무리

CPU Load는 시스템 운영과정에 있어서 CPU Usage만큼이나 중요한 지표입니다. 코어당 CPU Load가 지속적으로 0.7을 넘어간다면 사전에 문제를 고민해봐야 합니다. 코어당 CPU Load가 지속적으로 1.0 이상의 값을 가지고 있다면 아마도 곧 문제에 직면하게 될 확률이 높습니다. 안정적인 IT 서비스 운영을 위해 평소 CPU Load를 살펴보는 습관을 가지면 좋을 것 같습니다. 


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari