서버에 들어가 uptime을 쳤더니 load average: 2.10, 1.80, 0.95. 이 세 숫자가 높은 건지 낮은 건지 감이 안 와서 헷갈립니다. load average는 "CPU 사용률 %"가 아니라 실행을 기다리는 작업의 평균 개수라는 점만 잡으면 한 번에 이해됩니다.
load average가 세는 것
load average는 일정 시간 동안 실행 중이거나 실행을 기다리는(runnable) 작업의 평균 수입니다. 리눅스에서는 여기에 디스크 I/O를 기다리며 멈춘(uninterruptible) 작업도 포함됩니다. 그래서 CPU가 한가해도 디스크가 느리면 load가 치솟을 수 있습니다.
세 숫자는 각각 최근 1분·5분·15분의 평균입니다. 시간 흐름을 읽는 게 핵심입니다.
| 패턴 | 1·5·15분 예시 | 해석 |
|---|---|---|
| 부하 상승 중 | 4.0, 2.0, 1.0 | 최근 급증 — 원인 진행 중 |
| 부하 하강 중 | 0.5, 1.5, 3.0 | 이미 지나간 스파이크, 회복 중 |
| 꾸준히 높음 | 5.0, 5.0, 5.0 | 만성 과부하, 증설·튜닝 대상 |
코어 수로 나눠서 본다
load 값 하나만으로는 판단할 수 없습니다. CPU 코어 수가 기준선입니다. 코어가 4개면 load 4.0이 "정확히 꽉 찬" 상태입니다. 같은 load 2.0도 1코어면 과부하, 8코어면 여유입니다.
nproc # 코어 수 확인
uptime # load average 3개 출력
8
15:42:11 up 7 days, load average: 2.10, 1.80, 0.95
코어 8개에 load 2.10이면 사용률로 보면 약 2.10 / 8, 즉 25% 수준이라 여유롭습니다. load가 코어 수보다 한참 크면(load > 코어수) 작업들이 줄 서서 기다린다는 뜻이라 응답이 느려집니다.
높을 때 무엇을 의심하나
load가 코어 수를 넘는데 top에서 CPU %us(사용자)가 낮다면, CPU가 아니라 I/O 대기가 원인일 가능성이 큽니다. top의 %wa(I/O wait)를 같이 봐야 합니다.
top # %us, %sy, %wa 헤더 확인
top -o %CPU # CPU 많이 먹는 프로세스순 정렬
%wa가 높으면 디스크·네트워크 스토리지가 병목입니다. 이 경우 CPU를 늘려도 소용없고 디스크나 쿼리를 봐야 합니다. 반대로 %us가 높으면 진짜 CPU 연산 부하라 코드·프로세스를 봐야 합니다.
요점 정리
- load average = CPU 사용률이 아니라 실행 대기 작업의 평균 개수(I/O 대기 포함).
- 세 숫자는 1·5·15분 — 추세(오르는 중/내리는 중)를 읽는다.
- 판단 기준은 코어 수:
load가 코어 수보다 크면 줄서기 시작. - load 높은데 CPU는 한가하면
top의%wa로 I/O 병목을 의심.
uptime·top·nproc로 부하를 직접 읽고 병목을 추적하는 실습은 리눅스 트랙에서 회원가입 없이 무료로 익힐 수 있습니다.