Как устроен механизм распределения входящих сетевых прерываний между ядрами процессора (RSS, Receive Side Scaling) в Linux? Что произойдёт, если все сетевые пакеты от Nginx начнут обрабатываться только одним ядром CPU — ядром №0, — и как это исправить?

RSS распределяет потоки по RX-очередям; привязка IRQ определяет ядра обработки. Концентрация на CPU0 может вызвать насыщение softirq, drops и рост задержек при свободных остальных ядрах.

Короткий ответ

Что ответить на собеседовании

RSS распределяет потоки по RX-очередям; привязка IRQ определяет ядра обработки. Концентрация на CPU0 может вызвать насыщение softirq, drops и рост задержек при свободных остальных ядрах.

Подробный разбор

Ответ с пояснениями

RSS распределяет потоки по RX-очередям; привязка IRQ определяет ядра обработки. Концентрация на CPU0 может вызвать насыщение softirq, drops и рост задержек при свободных остальных ядрах.

Проверьте /proc/interrupts, очереди NIC, irqbalance, affinity и NUMA. Настройте распределение очередей и IRQ по подходящим ядрам; при необходимости рассмотрите RPS/RFS. Если речь о loopback-трафике от Nginx, аппаратный RSS не является универсальным решением. Изменения проверяйте нагрузкой, не выбирая маску CPU вслепую.

Источник: docs.kernel.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее