CS 지식

[CS 지식21.] top에 나오는 load average, 진짜 뜻은?

Somaz 2025. 8. 27. 08:29
728x90
반응형

Overview

서버나 시스템을 모니터링할 때 가장 먼저 확인하는 숫자 중 하나가 바로 Load Average다.
특히 top, uptime, htop 같은 커맨드에서 1분, 5분, 15분 평균값으로 나오는 세 개의 숫자가 익숙할 것이다.

 

하지만 이 숫자가 CPU 사용률과 같다고 생각한다면 오해다.


“숫자가 2면 CPU가 200% 쓰인다는 뜻인가요?”, “로드가 5면 무조건 과부하인가요?” 같은 질문은 지금도 자주 들리는 오해다.

 

이번 글에서는 Load Average의 정확한 의미, 해석 방법, 그리고 실무에서의 기준선 설정 방법까지 하나씩 짚어본다.

 

 

 

 

 

 

📅 관련 글

2023.01.13 - [CS 지식] - [CS 지식1.] 웹 브라우저의 동작원리

2023.02.23 - [CS 지식] - [CS 지식2.] DNS의 동작원리(Domain Name System)

2023.03.06 - [CS 지식] - [CS 지식3.] HTTP / HTTPS 란?

2023.03.07 - [CS 지식] - [CS 지식4.] OSI 7계층 & TCP/IP 4계층이란?

2023.03.17 - [CS 지식] - [CS 지식5.] 가상화란?

2023.05.24 - [CS 지식] - [CS 지식6.] HTTP 메서드(Method)란? / HTTP Status Code

2023.12.05 - [CS 지식] - [CS 지식7.] Kubernetes 구성요소와 Pod 생성 방식이란?

2023.12.19 - [CS 지식] - [CS 지식8.] 프로세스(Process)와 스레드(Thread)란?

2023.12.30 - [CS 지식] - [CS 지식9.] 클라우드 컴퓨팅이란?(Public & Private Cloud / IaaS SaaS PaaS / Multitenancy)

2024.01.05 - [CS 지식] - [CS 지식10.] 웹1.0(Web1.0) vs 웹2.0(Web2.0) vs 웹3.0(Web3.0)

2024.02.02 - [CS 지식] - [CS 지식11.] NAT(Network Address Translation)란?

2024.05.22 - [CS 지식] - [CS 지식13.] 동기 및 비동기 처리란?

2024.05.23 - [CS 지식] - [CS 지식14.] 3tier 아키텍처란?

2024.08.28 - [CS 지식] - [CS 지식15.] SSR vs CSR vs ISR vs SSG

2024.11.09 - [CS 지식] - [CS 지식16.] stdin(표준입력) vs stdout(표준출력) vs stderr(표준에러)

2024.11.11 - [CS 지식] - [CS 지식17.] IPsec vs SSL/TLS

2024.11.22 - [CS 지식] - [CS 지식18.] Quantum Computing(양자 컴퓨팅)

2025.04.01 - [CS 지식] - [CS 지식19.] C/C++ 개발자도 다시 보는 메모리 구조

2025.04.02 - [CS 지식] - [CS 지식20.] OS 캐시와 디스크 I/O: MySQL, Redis 퍼포먼스 분석

2025.04.02 - [CS 지식] - [CS 지식21.] top에 나오는 load average, 진짜 뜻은?

 

 

 

 

 

 


 

 

 

Load Average란?

Load Average는 일정 시간 동안 실행 중이거나, 실행을 기다리는 프로세스의 평균 개수를 의미한다.


즉, 시스템이 얼마나 ‘바쁜 상태’였는지를 나타내는 지표다.

$ uptime
 10:00:00 up 5 days,  2:13,  1 user,  load average: 0.82, 0.93, 1.01

 

이 출력은 각각 다음을 의미한다.

  • 1분 평균 로드: 0.82
  • 5분 평균 로드: 0.93
  • 15분 평균 로드: 1.01

 

Load Average는 어떻게 계산될까?

Load Average는 단순한 평균이 아닌, 지수 이동 평균(Exponential Moving Average) 으로 계산된다.


즉, 최근 데이터에 가중치를 두고 계산되기 때문에 변화에 민감하게 반응한다.

  • 1분 평균 → 가장 최근 변화에 민감
  • 15분 평균 → 완만한 추세 확인용

 

이 덕분에 갑작스러운 부하 증가지속적인 부하 상태를 쉽게 비교할 수 있다.

 

 

 

 

 

Load Average의 구성 요소

Load Average는 단순한 CPU 사용률이 아니라, 다음 3가지 상태의 프로세스 수를 기준으로 계산된다.

 

상태 포함 여부 설명
Running 포함 실행 중인 프로세스
Runnable 포함 CPU 할당을 기다리는 프로세스
I/O Wait 포함 (Linux만) I/O 대기 중인 프로세스 (e.g., 디스크/네트워크)
Sleeping / Idle 미포함 아무 작업도 안 하는 상태

 

즉, Load Average는 ‘당장 CPU를 쓰고 있거나, 쓰려고 대기 중인 프로세스’가 얼마나 많았는지를 의미한다.

 

 

 

Load Average vs CPU 사용률

항목 Load Average CPU 사용률
의미 시스템 전체의 작업량 CPU가 실제로 일한 비율
포함 요소 실행 중 + 대기 중 프로세스 수 CPU 시간(%)
단위 프로세스 개수 퍼센트(%)
예시 로드 2.00 = 2개 프로세스가 동시에 실행 중 CPU 사용률 80% = 80% 시간동안 바쁨

 

실전에서 흔히 생기는 오해들

  • “Load Average는 CPU 사용률이다” → ❌ 아님! 프로세스의 수 (대기 포함)
  • “Load가 2면 CPU가 200% 사용된 것” → ❌ CPU 코어 수를 고려해야 함
  • “로드가 높으니 서버 성능이 나쁘다” → ❌ I/O 병목이 원인일 수 있음

 

 

 

 

 


 

 

 

 

 

 

기준점은 몇이 적정한가?

기준은 CPU 코어 수를 기준으로 판단해야 한다.

 

 

예를 들어:

  • 2코어 시스템에서 Load Average = 2.00 → CPU가 꽉 찼음 (정상)
  • Load = 4.00 → 평균 2개가 CPU를 기다리고 있는 상태 (혼잡)
  • 1코어 시스템에서 Load = 0.70 → 여유 있음

즉, Load Average ≤ CPU Core 수 → 정상 범위
Load Average ≫ CPU Core 수 → 과부하 가능성

 

 

 

 

실무에서의 해석 팁

 

점검 포인트

  • 급격한 상승 여부: 1분 평균이 5분/15분보다 높다면 급격한 부하 증가
  • 일관된 고부하: 15분 평균이 꾸준히 높다면 지속적인 병목
  • I/O wait 포함 여부: 디스크 병목인지 CPU 병목인지 구분 필요 (`iostat`, `vmstat` 활용)

 

모니터링 예시

  • `top`, `uptime`, `htop`, `grafana`, `prometheus.node_exporter` 등에서 실시간으로 확인 가능
  • Prometheus 쿼리 예시
node_load1 / count(node_cpu_seconds_total{mode="idle"})

 

 

Kubernetes에서 Load Average는 어떻게 쓰일까?

K8s 노드 오토스케일링 시, CPU 사용률 기준 외에도 Load Average 기반 커스텀 매트릭이 적용되기도 한다.


예: Prometheus + KEDA 조합에서 `node_load1 / core` 수를 기준으로 스케일 아웃

 

 

 

 

 

실전 예시

$ top
load average: 1.5, 1.2, 1.0

 

  • 4코어 시스템이라면? → 여유 있는 상태
  • 1코어라면? → 이미 대기 병목 있음

 

$ top
load average: 5.0, 4.9, 5.1

 

 

  • 2코어 시스템이라면? → 과부하 상태이며, 쿼리/배치/IO 등 확인 필요

 

 

 

 

 


 

 

 

🔚 마무리: "CPU가 아니라 시스템의 줄 서는 길이"

 

 

 

 

 

 

Load Average는 단순한 CPU 사용률이 아닌,
‘얼마나 많은 프로세스가 CPU나 자원 할당을 기다렸는가’ 를 보여주는 시스템 부하의 간접 지표다.

 

 

따라서 단순히 "높다/낮다"로 평가하기보다는,

  • CPU 코어 수와 비교 → Load Average가 CPU Core 수보다 지속적으로 높다면 병목 가능성
  • 시간 추이 파악 → 1분/5분/15분 평균 간의 흐름을 보면 ‘급등’ vs ‘지속’ 여부 판단 가능
  • iowait과의 조합 분석 → CPU 병목인지, 디스크 병목인지 구별해야 정확한 조치 가능

 

실전에서는 `CPU 사용률 + Load Average + iowait` 를 함께 보면서 병목 지점을 종합적으로 파악하자.

 

 

실전 팁

  • 단기 스파이크는 무시해도 되지만, 15분 평균 이상 지속되는 고로드는 반드시 원인을 점검해야 한다.
  • I/O wait이 함께 높은 경우, 디스크 지연, NFS 병목, 혹은 백업 작업 등이 의심 대상이다.
  • Prometheus, Grafana 등으로 트렌드를 시각화해두면 급등 시점과 원인 탐색이 훨씬 쉬워진다.

 

 

결론적으로, Load Average는 단순한 숫자가 아니라 "시스템의 숨소리"에 가깝다.


이 수치를 올바르게 읽을 수 있다면, 문제의 조짐을 미리 감지하고 장애를 예방하는 능력을 갖추게 된다.

 

 

 

 

 

 


Reference

 

 

728x90
반응형