Понимание Load Average
Load Average (LA) показывает среднее количество процессов в состояниях:
- Выполняющихся на CPU (
R
в top
)
- Ожидающих CPU (
D
- uninterruptible sleep)
Формат: 1мин 5мин 15мин
(в вашем случае: 900, 900, 900)
Диагностический алгоритм
1. Проверить количество ядер CPU
nproc
lscpu | grep -E '^CPU\(s\):|Core\(s\) per socket:'
Интерпретация:
- LA 900 на 1000-ядерном сервере = норма (90% загрузки)
- LA 900 на 4-ядерном сервере = катастрофа
2. Анализ состояния процессов
top -1 -b -n 1 | head -n 15
ps -eo pid,ppid,stat,pcpu,pmem,cmd --sort=-pcpu | head -n 20
Ключевые метрики:
- Процент использования CPU (
%CPU
)
- Количество процессов в состоянии
D
(uninterruptible)
- Количество running процессов (
R
)
3. Проверить тип нагрузки
vmstat 1 5
mpstat -P ALL 1 5
pidstat 1 5
Анализируем:
%idle
в mpstat
- Очередь ввода/вывода (
wa
в vmstat)
- Контекстные переключения (
cs
)
4. Дисковая подсистема
Проверяем:
- Await (
await
) > 10ms - проблема
- %util близкий к 100%
- Количество процессов в
D
состоянии
5. Сетевой стек
sar -n DEV 1 5
netstat -tulnp
ss -s
6. Проверка лимитов
cat /proc/sys/fs/file-nr
ulimit -a
dmesg | grep -i 'oom'
Возможные причины высокой LA при нормальной работе
-
Многоядерные системы:
- Сервер с 1024 ядрами: LA 900 = 88% загрузки
- Нормальная ситуация для HPC-кластера
-
Ожидание IO (uninterruptible sleep):
- Много процессов в
D
состоянии
- Медленные диски или NFS
- Не обязательно влияет на пользовательскую производительность
-
Очереди обработки:
- Высокопараллельные приложения (например, nginx с 10k соединений)
- Go/Erlang с легковесными потоками
-
Ошибки мониторинга:
- Проблемы с
/proc/loadavg
- Виртуализация с нестандартным ядром
Практические шаги для анализа
-
Рассчитать отношение LA к количеству ядер:
echo "Scale=2; 900 / $(nproc)" | bc
-
Построить график:
- LA
- CPU usage
- Disk IO
- Network
-
Проверить метрики приложения:
- Latency
- Throughput
- Error rate
Резюмируем
-
Ключевой фактор - соотношение LA к количеству CPU ядер:
- 900/1000 ядер = норма
- 900/4 ядра = критично
-
Если LA >> ядер, но сервер работает:
- Проверить
D
-процессы (дисковый IO)
- Анализировать параллельную архитектуру приложения
- Исключить ошибки мониторинга
-
Рекомендации:
- Всегда смотреть LA в контексте количества ядер
- Для высоких значений строить correlation с другими метриками
- Различать CPU-bound и IO-bound нагрузки
Высокая Load Average не всегда означает проблему - важно анализировать ее в контексте архитектуры системы и реальной производительности приложения.