Ответ
Load Average — это усредненные за определенные периоды времени значения числа процессов, находящихся в состоянии R (Runnable) или D (Uninterruptible Sleep).
- R (Runnable): Процессы, готовые к выполнению и ожидающие своей очереди на CPU.
- D (Uninterruptible Sleep): Процессы, заблокированные, обычно в ожидании завершения операции ввода-вывода (например, чтения с диска). Это ключевой момент: высокий load average может быть вызван не CPU, а медленным диском или сетью.
Система выводит три числа: средняя нагрузка за 1, 5 и 15 минут.
Как интерпретировать?
Сравнивайте значение с количеством доступных CPU ядер (не потоков!). Узнать можно командой nproc или grep -c ^processor /proc/cpuinfo.
- Load < Число ядер: Система справляется, процессы не ждут.
- Load ≈ Число ядер: Система загружена полностью, но без очереди.
- Load > Число ядер: Формируется очередь, возможны задержки в отклике.
Практический пример диагностики:
# 1. Смотрим нагрузку
$ uptime
15:30:01 up 30 days, 2:15, 1 user, load average: 4.21, 3.75, 2.90
# 2. Узнаем количество ядер
$ nproc
4
# 3. Интерпретация: На 4-ядерной системе load в 4.21 означает, что в среднем за последнюю минуту 4.21 процесса ждали своей очереди. Это указывает на насыщение.
# 4. Смотрим, что создает нагрузку (процессы в состоянии R и D)
$ top
# Или более детально с помощью `atop` или `htop`.
# 5. Проверяем, не связано ли это с I/O (состояние D). Команда `iostat` или `iotop` поможет.
$ iostat -dx 2 5
# Если `%util` у диска близок к 100%, проблема в медленном I/O.
Для DevOps важно: Высокий load average на серверах приложений или БД — это триггер для алертов в Prometheus (node_load1, node_load5). Мы настраиваем алерты, когда нагрузка превышает порог (например, node_load1 > (число_ядер * 0.8)), и далее исследуем причину с помощью мониторинга CPU, памяти и дискового I/O.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶