Выбор ответа Senior Производительность обновлено
Сервис медленный, CPU 12%
Вопрос
На 8-ядерной машине общий CPU 12%, но сервис отвечает медленно. mpstat -P ALL 1 показывает одно ядро на 100%, остальные почти свободны. Что это значит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Узкое место в однопоточной части, например event loop. Средняя загрузка маскирует однопоточное узкое место: одно ядро в 100% это 12.5% от восьми.
Варианты ответа
- Узкое место в однопоточной части, например event loopправильный ответ
- Всё в порядке: 12% это мало, искать надо в сети
- Ядра неисправны, и планировщик не может их загрузить
- Нужно увеличить swap, чтобы разгрузить первое ядро
Разбор
Средняя загрузка маскирует однопоточное узкое место: одно ядро в 100% это 12.5% от восьми. Причины: однопоточный процесс, глобальная блокировка или все прерывания сетевой карты на одном ядре (видно по si для этого ядра и /proc/interrupts). Решения: масштабирование процессами, распределение прерываний (RSS, irqbalance). Неисправность ядер и своп здесь ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.