RSS Linux: несколько очередей не обещают равномерную загрузку CPU
Фотография конкретного исполнения не приложена.
Сетевая карта может распределять приём между аппаратными очередями, позволяя нескольким CPU обрабатывать трафик. RSS использует признаки потока и таблицу выбора очереди. Это не обязательное круговое распределение каждого следующего пакета по разным процессорам.
Потоки с одинаковым hash попадают в предусмотренную очередь, а один интенсивный поток способен занять большую долю её нагрузки. Поэтому свободные CPU рядом с перегруженным обработчиком не доказывают отсутствие RSS. Нужно видеть количество очередей, hash inputs и отображение interrupts.
Увеличение числа queues также имеет стоимость: больше прерываний, служебной работы и возможных обращений к удалённой памяти. Подходящая настройка зависит от NIC, драйвера и нагрузки. Общее число логических CPU не является достаточным основанием автоматически включить максимально возможное число очередей.
В приёмке сравнивают один интенсивный и множество независимых потоков. Наблюдают загрузку по CPU, drops очередей и прикладные задержки. Сохраняют фактическую RSS-конфигурацию. Хороший суммарный throughput оценивают вместе с худшей задержкой и перегрузкой отдельных queues, а не заменяют всё одним средним процентом CPU.
Основание — Official versioned Linux network documentation displaying6.18.0, networking/bonding, scaling and bridge, разделы RSS: Receive Side Scaling; indirection table. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — официальная версия документации Linux с заголовком 6.18.0. Это фиксированная редакция, а не утверждение об установленном или последнем ядре. Реальные NIC, драйвер, switch и параметры хоста не проверялись; настройки и сетевые испытания не выполнялись.