hostprofi.ru
Подобрать хостинг
Термин·буква Н

Нагрузка (load average)

краткое определение

Нагрузка (load average) — показатель загруженности сервера в Linux: среднее количество процессов, ожидающих процессорного времени или дисковых I/O, за последние 1, 5 и 15 минут.

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 мин сигнализирует о системной проблеме.

Другие термины