Встречается на 33% собеседований по DevOps

Что показывает 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-минутного, нагрузка растёт; если ниже — падает.

Пример использования

bash
$ 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.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы