Что показывает load average
Load average (средняя нагрузка) — это метрика, показывающая среднее количество процессов, находящихся в состоянии выполнения или ожидания CPU, за определённые промежутки времени. Она выводится командами uptime и top в виде трёх чисел, соответствующих средним значениям за последние 1, 5 и 15 минут. Эти числа помогают оценить загруженность системы и её способность справляться с текущей нагрузкой.
Как это работает
Ядро операционной системы ведёт учёт процессов в трёх состояниях: выполняющиеся (running), ожидающие CPU (runnable) и процессы в непрерываемом сне (uninterruptible sleep, например, ожидание ввода-вывода). Load average — это экспоненциально взвешенное скользящее среднее количества таких процессов. Важно понимать, что в расчёт включаются не только активные процессы, но и те, что ожидают завершения операций ввода-вывода, поэтому высокий load average может быть вызван не только загрузкой CPU, но и медленными дисками или сетью.
Интерпретация значений
Ключевой ориентир — количество логических ядер CPU. Узнать его можно командой nproc или из вывода lscpu.
- Load average ≈ числу ядер — система загружена на 100%. Например, на 4-ядерной машине значение 4.00 означает, что все ядра заняты, но очереди ожидания нет.
- Load average < числа ядер — есть свободные ресурсы, система не перегружена.
- Load average > числа ядер — процессы конкурируют за CPU, часть из них стоит в очереди. Например, значение 6.00 на 4 ядрах говорит о перегрузке: в среднем 2 процесса ожидают освобождения ядра.
Сравнение трёх чисел показывает динамику: если 1-минутное значение выше 15-минутного, нагрузка растёт; если ниже — падает.
Пример использования
$ uptime
14:32:10 up 3 days, 2:15, 1 user, load average: 2.45, 1.80, 1.50На 4-ядерной системе текущая нагрузка (2.45) выше средних за 5 и 15 минут (1.80 и 1.50), что указывает на рост нагрузки. Пока значение ниже 4.00, система справляется, но тенденция требует внимания.
Подводные камни
- Разные ОС считают по-разному: в Linux учитываются процессы в непрерываемом сне, в других Unix-системах — только выполняющиеся и ожидающие CPU. Поэтому сравнивать load average между разными ОС некорректно.
- Не путать с загрузкой CPU: load average не равен проценту использования CPU. Высокий load average при низком использовании CPU может указывать на проблемы с диском или блокировки.
- Ядра с гипертредингом: логические ядра (например, 8 при 4 физических) считаются как отдельные, поэтому ориентироваться нужно на
nproc, а не на число физических процессоров.
Когда использовать
Load average — быстрый индикатор для первичной диагностики. Он полезен при мониторинге серверов, чтобы вовремя заметить рост нагрузки. Однако для точного анализа причин перегрузки нужно смотреть на top, htop, iostat и другие метрики.
Коротко
- Load average — среднее число процессов в состоянии выполнения или ожидания CPU за 1, 5 и 15 минут.
- Сравнивайте значения с количеством логических ядер: больше ядер — перегрузка, меньше — запас ресурсов.
- Тренд между тремя числами показывает динамику нагрузки.
- Помните, что load average включает ожидание ввода-вывода и не равен загрузке CPU.