Linux 시스템을 관리하는 기본 기술 중 하나는 시스템 성능을 이해하는 것입니다. 빠른 상태 확인에 가장 유용한 명령어 중 하나는 uptime입니다.
user@machine:~$ uptime
17:23:35 up 1 day, 5:59, 2 users, load average: 0.00, 0.02, 0.05
이전에 uptime을 보았지만, 이제 Linux CPU 모니터링에 매우 중요한 load average 필드에 집중해 보겠습니다.
로드 평균 이해하기
로드 평균은 시스템의 CPU 부하에 대한 스냅샷을 제공합니다. 세 숫자는 지난 1 분, 5 분, 15 분 간격 동안의 평균 CPU 부하를 나타냅니다. 그렇다면 CPU 부하란 무엇일까요? 이는 실행 대기열 (run-queue) 에 있는 프로세스의 평균 개수를 의미합니다. 즉, CPU 에 의해 활발하게 실행되고 있거나 차례를 기다리고 있는 프로세스입니다. 이 측정값은 프로세스 활용도와 전반적인 시스템 성능의 핵심 지표입니다.
교통 체증 비유
단일 코어 CPU 를 단일 차선 고속도로라고 상상해 보세요.
- 고속도로가 꾸준한 차량 흐름으로 100% 가득 찼다면, 트래픽은 100% 이며, 이는 로드 평균 1.0 에 해당합니다.
- 심각한 교통 체증이 발생하여 차량이 고속도로 용량의 두 배로 밀려 있다면, 부하는 200% 또는 로드 평균 2.0 입니다.
- 고속도로가 절반 정도 비어 있다면, 부하는 0.5 입니다.
- 이상적으로는 교통 체증이 없는 새벽 2 시의 고속도로처럼 낮은 로드 평균을 유지하는 것이 좋습니다.
이 비유에서 차량은 CPU 가 처리하기를 기다리는 프로세스입니다.
최신 시스템에서 로드 평균 해석하기
로드 평균이 1.0 이라고 해서 시스템이 어려움을 겪고 있다는 의미는 아닙니다. 대부분의 최신 컴퓨터는 멀티 코어 프로세서를 사용합니다. 쿼드 코어 (4 코어) 프로세서가 있는 경우, 로드 평균이 1.0 이라는 것은 전체 CPU 용량의 25% 만 사용되고 있음을 의미합니다. 각 코어는 고속도로의 추가 차선 역할을 합니다.
로드 평균을 올바르게 해석하려면 CPU 코어 수를 고려해야 합니다. 시스템의 코어 수는 cat /proc/cpuinfo 명령어로 확인할 수 있습니다.
좋은 시스템 성능을 위한 일반적인 규칙은 로드 평균을 코어 수보다 낮게 유지하는 것입니다. 만약 머신의 로드 평균이 지속적으로 코어 수보다 높게 나타난다면, 비정상적으로 실행되는 프로세스나 불충분한 하드웨어 리소스와 같은 성능 병목 현상을 나타낼 수 있습니다.