Как рассчитать нагрузку на процессор (Load Average) в Linux и что означают три числа в выводе команды uptime?

Load Average (средняя нагрузка) в Linux — это метрика, показывающая среднее количество процессов, находящихся в состоянии выполнения или ожидания ресурсов за определённый промежуток времени. Команда `uptime` выводит три числа, например: `load average: 1.25, 0.87, 0.65`.

**Что означают три числа?**

Три числа соответствуют средней нагрузке за последние **1 минуту**, **5 минут** и **15 минут**. Это скользящее среднее, рассчитываемое по экспоненциальному алгоритму. Ядро Linux обновляет эти значения каждые 5 секунд.

— **Первое число (1 мин)** — текущая, сиюминутная нагрузка. Реагирует быстро на всплески.
— **Второе число (5 мин)** — среднесрочная нагрузка. Помогает понять тенденцию.
— **Третье число (15 мин)** — долгосрочная нагрузка. Показывает общий фон.

**Как интерпретировать значения?**

Ключевой ориентир — количество логических процессоров (ядер) в системе. Узнать его можно командой `nproc` или `cat /proc/cpuinfo | grep processor | wc -l`.

— Если Load Average **равен количеству ядер** — процессор загружен на 100%, но без очереди.
— Если **меньше** — система справляется, есть запас.
— Если **больше** — процессы стоят в очереди, система перегружена.

Например, для 4-ядерного процессора:
— `load average: 2.0` — нагрузка 50%, всё хорошо.
— `load average: 4.0` — полная загрузка, но без перегрузки.
— `load average: 8.0` — перегрузка в 2 раза, задержки неизбежны.

**Как рассчитывается Load Average?**

Linux использует экспоненциальное скользящее среднее (EMA). Формула:

load(t) = load(t-1) * e^(-5/T) + n * (1 — e^(-5/T))

где `T` — период (60, 300 или 900 секунд), `n` — число активных процессов в момент замера, `5` — интервал обновления в секундах.

**Важный нюанс:** в Linux в Load Average учитываются не только процессы в состоянии Running (R), но и процессы в состоянии Uninterruptible Sleep (D) — например, ожидающие операций ввода-вывода с диском. Поэтому высокий Load Average не всегда означает перегрузку CPU — причиной может быть медленный диск или сеть.

**Полезные команды для диагностики:**
— `uptime` — быстрый просмотр Load Average.
— `top` или `htop` — интерактивный мониторинг в реальном времени.
— `vmstat 1` — статистика с интервалом 1 секунда.
— `iostat` — нагрузка на дисковую подсистему.
— `cat /proc/loadavg` — сырые данные нагрузки из ядра.

Правило большого пальца: если 15-минутный Load Average стабильно превышает количество ядер, стоит искать причину — будь то прожорливый процесс, утечка памяти или узкое место в I/O.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.