УЛИКА #02 — Load Average = 20. CPU перегружен?

Мы разбираем инфраструктуру по фактам: Linux, Zabbix, мониторинг, диагностика и архитектура. От симптома — к проверяемому выводу: что именно доказывает метрика, какие гипотезы остаются и как подтвердить решение. Без догадок там, где можно проверить. Если нужно понимать не только что сделать, но и почему — вам сюда.

load averagecpuiowait

В 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

Читайте так же