Выбор ответа Senior Производительность обновлено

Сервис медленный, CPU 12%

Вопрос

На 8-ядерной машине общий CPU 12%, но сервис отвечает медленно. mpstat -P ALL 1 показывает одно ядро на 100%, остальные почти свободны. Что это значит?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Узкое место в однопоточной части, например event loop. Средняя загрузка маскирует однопоточное узкое место: одно ядро в 100% это 12.5% от восьми.

Варианты ответа

  1. Узкое место в однопоточной части, например event loopправильный ответ
  2. Всё в порядке: 12% это мало, искать надо в сети
  3. Ядра неисправны, и планировщик не может их загрузить
  4. Нужно увеличить swap, чтобы разгрузить первое ядро

Разбор

Средняя загрузка маскирует однопоточное узкое место: одно ядро в 100% это 12.5% от восьми. Причины: однопоточный процесс, глобальная блокировка или все прерывания сетевой карты на одном ядре (видно по si для этого ядра и /proc/interrupts). Решения: масштабирование процессами, распределение прерываний (RSS, irqbalance). Неисправность ядер и своп здесь ни при чём.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме