Load average в Linux отображается тремя числами: 1.23 0.87 0.65. Это скользящие средние за 1, 5 и 15 минут количества процессов в состоянии "runnable" (выполняются или ожидают CPU) и "uninterruptible sleep" (ожидают дисковых операций). Команды для просмотра: uptime, top, htop, /proc/loadavg.
Как работает
Интерпретация значений зависит от количества CPU-ядер. На однопроцессорной системе load average 1.0 означает 100% загрузку. На системе с 4 ядрами load average 4.0 = 100%, load average 8.0 = система перегружена вдвое (очередь процессов в 2 раза длиннее числа ядер).
Правило интерпретации:
- LA < количества ядер — система справляется с нагрузкой.
- LA ≈ количеству ядер — пиковая загрузка, резервов нет.
- LA > количества ядер — система перегружена, процессы ждут в очереди.
Важная особенность Linux: в отличие от Unix и macOS, Linux включает в LA процессы в состоянии D (Uninterruptible Sleep) — ожидание дискового I/O, NFS-операций, блокировок ядра. Это означает, что высокий LA может объясняться не загрузкой CPU, а медленными дисками или сетевым хранилищем.
Диагностика: если LA высокий, но CPU idle > 80% — проблема в I/O. Команды для анализа: iotop, iostat -x 1, vmstat 1. Если CPU busy — использовать top, htop для поиска "тяжёлых" процессов.
Динамика изменения чисел подсказывает тренд: если первое число (1 мин) больше третьего (15 мин) — нагрузка растёт; если меньше — снижается. Резкий всплеск первого числа при стабильных 5 и 15 мин указывает на кратковременный пик.
История
Метрика load average появилась в ранних Unix-системах (1970-е годы). В ядре Linux реализована через функцию calc_global_load(), обновляющую значения каждые 5 секунд с использованием экспоненциально затухающего скользящего среднего (EWMA). Константы 1, 5, 15 минут — не прямые замеры, а параметры формулы: значение decay-factor рассчитывается как e^(-5/60) для 1 мин, e^(-5/300) для 5 мин, e^(-5/900) для 15 мин.
На что обращать внимание
Для VPS проверяйте количество vCPU — именно на него ориентироваться при интерпретации LA. При оверкоммите vCPU хостером реальная производительность ниже номинальной, и LA может казаться нормальным при деградации. Для мониторинга настройте алерты в Zabbix или Prometheus при LA > количества ядер * 2 в течение 5 минут — это сигнал о системной проблеме, а не краткосрочном пике.
История метрики Load Average
Метрика load average введена в Unix в конце 1960-х годов в MIT CTSS. В Linux реализована через подсчёт процессов в очереди выполнения (runnable + uninterruptible sleep). Exponentially Weighted Moving Average (EWMA) вычисляется за 1, 5 и 15 минут. В Linux 5.3.11 (2019) исправлен баг 9-летней давности: load average неверно вычислялся при переходе CPU в idle. Значение «хорошего» load average зависит от количества CPU/ядер.
Интерпретация Load Average
| CPU | Норма (load avg 1 мин) | Высокая нагрузка |
|---|---|---|
| 1 ядро | 0.0 - 1.0 | >1.5 |
| 4 ядра | 0.0 - 4.0 | >6.0 |
| 8 ядер | 0.0 - 8.0 | >12.0 |
Правило: load average > N ядер → очередь процессов. Load average высок но CPU idle — причина в ожидании I/O (диск, сеть). Проверьте iostat -x 1 и iowait %. На VPS с 2 vCPU load average 1.5 — нормальная нагрузка.
Диагностика высокого load average
uptime # быстрый просмотр 1/5/15 мин
top -b -n1 # процессы с наибольшим потреблением CPU
ps aux --sort=-%cpu # сортировка по CPU
iostat -x 1 3 # дисковый I/O
vmstat 1 5 # блокировки ввода-вывода
Типичные ошибки
- Паника при load average = 2 на 4-ядерном сервере — это нормально.
- Не учитываются zombie-процессы: они увеличивают load average, но не потребляют CPU.
- Не мониторится тренд: рост load average за 15 мин сигнализирует о системной проблеме.