리눅스 Load Average란?

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8root 계정2026-10-17 확인

리눅스에서 top 명령어 또는 uptime 명령어로 1분, 5분, 15분의 시스템의 평균 로드 지표인 Load Average를 통해 평균 부하 정도를 알 수 있습니다. Load Average는 CPU에 어느 정도의 일이 쌓이는지를 나타내는 것으로 정의 내릴 수 있습니다.

✅ 리눅스 Load Average의 이해

uptime
 21:28:26 up  x:xx,  2 users,  load average: 2.11, 3.32, 4.31

세 개의 숫자 (2.03, 20.17, 15.09)는 시스템에서의 1분,5분,15분 동안의 평균 부하를 나타 냅니다. 1코어의 단일 CPU 환경일 경우 평균 부하 1이 의미하는 것은 100% CPU를 사용하고 있다는 것을 의미합니다. 2코어일 경우는 50%, 4코어일 경우 25%를 사용하는 것을 의미합니다.

리눅스 uptime 명령어를 통한 Load Average 확인하기

결국 단일 CPU 환경에서 부하 1과 4개의 CPU에서 부하가 4라는 것은 자원을 사용하는 양적인 측면에서 동일한 것으로 이해할 수 있습니다.

🔲 4코어 기준 Load Average 읽기: 부하 1 · 4 · 7

[man uptime]에는 Load Average가 CPU 개수로 나눈 값이 아니며, 부하 1은 단일 CPU 시스템에서는 늘 바쁜 상태이고 4 CPU 시스템에서는 75%를 쉰 상태라고 적혀 있습니다.

같은 방식으로 4코어 서버에서 부하 1 · 4 · 7을 읽으면 아래와 같습니다.

부하네 코어읽는 법
1코어 하나 몫만 사용 · 셋 몫은 쉼75%를 쉬는 상태
4네 코어 몫을 모두 사용쉬는 코어가 없는 한계선
7네 코어 몫을 모두 사용 · 약 3개가 대기코어 수를 넘어 줄이 선 상태

부하 7을 CPU 70%로 읽기 쉽지만, Load Average는 백분율이 아니라 실행 중이거나 기다리는 프로세스 수의 평균입니다. 그래서 같은 7이라도 1코어에서는 여섯 개가, 4코어에서는 약 세 개가 차례를 기다리는 숫자가 됩니다.

✅ 평균 부하가 높은 것의 의미

Load Average의 평균 부하가 높다는 것은 “어떤 이유로 높은가?”로 원인을 찾을 수 있습니다.

  • 평균 부하 원인
  • CPU에 의한 부하: 프로세스가 CPU 자원을 사용하기 전 대기 상태.
  • RAM에 의한 부하: 높은 RAM 사용으로 RAM 영역이 아닌 Swap 영역으로 옮겨진 경우.
  • 디스크 I/O에 자원이 집중된 경우

시스템의 주요 리소스는 CPU, RAM, 디스크 I/O 3가지와 네트워크를 볼 수 있으며, 서버에서의 문제 발생이 원인일 경우 시스템 엔지니어의 경우 RAM, 또는 CPU를 추가할지를 고민할 수 있고, 개발자의 경우 새로 수정한 코드가 느리게 실행되는지 체크를 고려할 수 있습니다.

✅ 부하의 원인 파악하기

구체적인 부하의 원인을 파악하기 위해 vmstat 명령어를 활용할 수 있습니다.

  • r과 b 열에서 각각의 프로세스 및 확인할 수 있습니다.
  • r – The number of processes waiting for run time: 현재 실행되고 있는 프로세스의 갯수
  • b – The number of processes in uninterruptible sleep: I/O를 위해 대기열에 있는 프로세스의 개수
vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 xxxxxxx  xxxxx xxxxxxxx    0    0   119    34  355  207 25  4 68  1  2
 1  0      0 xxxxxxx  xxxxx xxxxxxxx    0    0     0    20 4497 3649 17  2 81  0  0
 9  0      0 xxxxxxx  xxxxx xxxxxxxx    0    0     0     6 5586 4402 24  2 74  0  1
 2  0      0 xxxxxxx  xxxxx xxxxxxxx    0    0     0     0 6400 4831 26  2 69  0  2
 3  0      0 xxxxxxx  xxxxx xxxxxxxx    0    0     0    56 7558 5377 27 10 62  0  2

b 열에 있는 프로세스가 많이 표시되는 경우 I/O 처리 과정의 문제를 체크 해 볼 수 있겠습니다.

리눅스 TOP 명령어: 명령줄 인터페이스(CLI-Command-Line Interface)

✅ 부하가 오른 날 원인 찾기: 4코어에서 7 안팎

4코어 Nginx + Apache 서버에서 Load Average가 7 안팎까지 상승한 날, CPU가 먼저 찼고 메모리는 여유가 있었습니다.

숫자가 코어 수를 넘은 것을 확인해도 무엇이 부하를 올렸는지는 Load Average만으로 보이지 않으며, [top] 머리 줄과 [vmstat], [ps] 순서로 범위를 좁힙니다. [man uptime]에 따르면 Load Average에는 CPU를 사용하거나 차례를 기다리는 프로세스와, 디스크 같은 입출력을 기다리는 프로세스가 함께 들어갑니다.

🧭 Load Average 원인 갈래
설명 다이어그램
🔍 원인
⏱️ Load Average에 들어가는 프로세스
실행 중CPU 사용
실행 대기CPU 차례를 기다림
입출력 대기디스크 같은 입출력을 기다림
vmstat→
📊 vmstat에서 보는 열
r실행 중이거나 실행을 기다리는 프로세스
b입출력에 막혀 기다리는 프로세스
wa입출력을 기다린 시간
si · soSwap을 오간 양
CPU를 사용하는 프로세스와 차례를 기다리는 프로세스가 함께 세어지며, [r] 열이 코어 수보다 큰 줄이 이어지면 CPU를 기다리는 줄이 선 것입니다.
디스크 같은 입출력을 기다리는 프로세스도 Load Average에 들어가며, 이때는 [b] 열과 [wa] 열이 상승합니다.
메모리가 모자라 Swap을 사용하면 [si] · [so] 열이 0보다 커지며, 두 열이 0이면 Swap을 오가는 일은 없습니다.

1. 세 값의 흐름: top 머리 줄

[top]을 한 번만 실행해 머리 세 줄을 보면 Load Average와 프로세스 상태, CPU 사용 비율이 함께 나옵니다.

top -b -n 1 | head -3
top - 21:28:35 up  x:xx,  2 users,  load average: 2.02, 3.28, 4.29
Tasks: 243 total,   4 running, 239 sleeping,   0 stopped,   0 zombie
%Cpu(s): 15.9 us,  8.3 sy, 15.9 ni, 56.8 id,  0.8 wa,  0.8 hi,  0.8 si,  0.8 st

세 값은 1분, 5분, 15분 순서이므로 1분 값이 15분 값보다 크면 상승 중이고, 작으면 감소 중입니다. 위 출력은 1분 2.02가 15분 4.29보다 작아 감소 중이며, [%Cpu(s)] 줄의 [id]는 쉬는 비율, [wa]는 입출력을 기다린 비율입니다.

2. CPU 대기와 입출력 대기: vmstat

[vmstat] 출력에서 [r] 열이 코어 수보다 큰 줄이 이어지면 CPU를 기다리는 줄이 선 것이고, [b] 열과 [wa] 열이 상승하면 입출력을 기다리는 프로세스가 부하를 올린 것입니다.

메모리가 모자라 Swap을 사용하면 [si] · [so] 열이 0보다 커지며, 두 열이 0이면 Swap을 오가는 일은 없습니다.

3. 부하를 올린 프로세스 찾기: ps · top

CPU 대기로 확인되면 [ps]로 CPU 사용률이 높은 프로세스부터 정렬해 확인합니다.

ps -eo pid,ni,pcpu,comm --sort=-pcpu | head
    PID  NI %CPU COMMAND
 195597   0 16.0 php-fpm
 194842   0 15.6 php-fpm
 194833   0 14.4 php-fpm
 196670   0 13.7 php-fpm
 194880   0 13.4 php-fpm
 194859   0  9.9 php-fpm
 197332   0  9.8 php-fpm
   1001   0  8.5 mariadbd
 194934   0  8.3 php-fpm

[%CPU]는 프로세스가 시작된 뒤 지금까지의 평균이라, 방금 부하를 올린 프로세스는 [top]을 실행한 뒤 [P] 키로 CPU 순으로 정렬해 함께 확인합니다.

🔢 FAQ & 추천 콘텐츠

[w] 명령어의 첫 줄은 [uptime]과 같은 정보이며, 현재 시간과 가동 시간, 로그인한 사용자 수와 함께 1분 · 5분 · 15분 Load Average가 표시됩니다.

[top]을 실행한 뒤 [1] 키를 누르면 [%Cpu(s)] 한 줄이 코어마다 [%Cpu0] · [%Cpu1]처럼 나뉘어 표시되며, 다시 누르면 한 줄로 돌아갑니다.

[st]는 가상 머신에서 하이퍼바이저가 가져간 CPU 시간의 비율이며, [top]의 [%Cpu(s)] 줄에도 같은 이름으로 표시됩니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 4   +   8   =