Определение простыми словами
Load Average считает не CPU usage в процентах, а длину очереди задач, которые хотят выполниться или ждут диск. Грубо: если число равно количеству ядер — система загружена под завязку, но без затыка. Выше — кто-то ждёт. Ниже — есть запас.
На 4-ядерном сервере значение 4.0 — это 100% утилизация без задержек. Значение 8.0 — задачи стоят в очереди и латентность растёт. Значение 1.0 — система простаивает на 75%. Сравнивать LA нужно строго с количеством ядер из htop или nproc.
Сравнение трёх чисел Load Average
| Окно | Что показывает | Когда смотреть |
|---|---|---|
| 1 минута | Текущий пик | Реакция на событие, инцидент |
| 5 минут | Тенденция | Растёт нагрузка или спадает |
| 15 минут | Базовая загрузка | Capacity planning, алерты |
Кейсы использования
- LA 1m=8 на 4-ядерном сервере, 5m=2, 15m=1 — кратковременный всплеск (возможно cron). Не требует действий.
- LA 1m=15, 5m=18, 20m=20 на 4 ядрах — устойчивая перегрузка. Нужно искать виновного процесса в htop и вызывать free на предмет swap.
- LA 5.0 при CPU 20% — типичный признак I/O wait (диск или сеть). Проверять iostat, iotop.
- Negative-сценарий: настроен алерт «LA > 10» без учёта ядер. На 32-ядерной ноде это норма, на 2-ядерной — катастрофа. Алерт бесполезен.
- LSTM/Prophet прогноз LA на месяц позволяет планировать апгрейд VPS до того, как сайт начнёт тормозить.
Технические детали
# Текущий Load Average
uptime
# 14:32:18 up 12 days, 4:21, 2 users, load average: 0.42, 0.71, 0.85
# Альтернатива через /proc
cat /proc/loadavg
# 0.42 0.71 0.85 2/410 12345
# первые три — LA, потом running/total процессов, последний PID
# Подгонка под количество ядер
nproc
awk -v c=$(nproc) '{print "LA1="$1" cores="c" usage="$1/c*100"%"}' /proc/loadavg
# Алерт через bash + cron каждую минуту
* * * * * awk -v c=$(nproc) '{if ($1/c > 1.5) print strftime() " overload " $1}'
/proc/loadavg >> /var/log/load-overload.log
# Историческая динамика через sar
sar -q 1 60 # выборка каждую секунду 60 раз
sar -q -f /var/log/sa/sa$(date +%d -d yesterday) # за вчера
Главный антипаттерн — настраивать алерт на абсолютное значение без нормализации по ядрам. Правильный порог: LA15 / nproc > 1.0 на протяжении 10+ минут. Так алерты будут одинаково корректны и для 1-ядерного VPS, и для 64-ядерного выделенного.
🔥 Где это применяется
Частые вопросы
Какое значение Load Average считается нормальным?
LA, делённое на количество ядер. Значение до 0.7 на ядро — комфортно, 0.7–1.0 — рабочая загрузка, выше 1.0 — задержки. Смотреть нужно 5- и 15-минутное среднее.
Почему Load Average высокий, а CPU не загружен?
В Linux Load Average учитывает не только CPU, но и процессы в TASK_UNINTERRUPTIBLE (ждут диск или сеть). Если LA 5.0 при CPU 10% — это I/O wait, проверяйте iostat и iotop.
Как получить Load Average программно?
Читать /proc/loadavg (Linux) — три числа через пробел. Через системные вызовы getloadavg(3) в C/Python. В мониторингах Prometheus метрика node_load1, node_load5, node_load15.