В Linux видим:
load average: 20.31, 18.72, 16.40
Первая реакция:
CPU не справляется.
Но Load Average — это не прямой показатель загрузки процессора.
В Linux в него входят не только задачи, которые выполняются или готовы выполняться на CPU, но и задачи в состоянии непрерываемого ожидания.
Поэтому высокий Load Average может появиться не только из-за нехватки вычислительных ресурсов.
Например:
Load Average ↑
↓
загрузка CPU невысокая
↓
много задач ждут I/O
↓
проблема может быть
в дисковой подсистемеТо есть:
Load Average высокий
≠
CPU перегруженЧто проверять дальше
Если Load Average заметно вырос, полезно посмотреть:
- сколько CPU доступно системе;
- фактическую загрузку CPU;
iowait;- сколько задач находится в состояниях
RиD; - задержки дисковой подсистемы;
- не появилось ли массовое ожидание I/O.
Что означают R и D:
R— running/runnable
Задача либо сейчас выполняется на CPU, либо готова выполняться и ожидает процессорного времени.D— uninterruptible sleep
Задача находится в непрерываемом ожидании завершения операции. На практике часто это связано с I/O — например, с ожиданием диска или другого устройства.
Посмотреть состояния процессов можно, например, так:
ps -eo state,pid,comm
Но сама по себе команда ещё не даёт готового диагноза.
Она помогает ответить на более полезный вопрос:
какие именно задачи формируют текущую нагрузку и чего они ждут?
Ещё один важный момент
Значения:
20.31 18.72 16.40
относятся примерно к средним значениям нагрузки за:
1 минуту 5 минут 15 минут
При этом Load Average не нормализуется автоматически по количеству CPU.
Поэтому:
Load Average = 4
для системы с 2 CPU и системы с 32 CPU — это совершенно разный контекст.
Главное
Load Average
≠
загрузка CPUВысокий Load Average говорит о том, что в системе накопилось много выполняющихся, готовых к выполнению или ожидающих завершения операций задач.
А вот что именно их задерживает — CPU, I/O или другая причина — нужно устанавливать отдельно.
#УликиИнфры #Linux #Performance