Receive Side Scaling (RSS)
Определение
Receive Side Scaling (RSS) — аппаратный механизм сетевой карты, который распределяет входящие потоки по нескольким очередям приёма. Разные очереди могут обрабатываться разными CPU.
Также ищут: RSS · Receive-side Scaling · масштабирование приёма по очередям
Зачем это знать
Многопортовая или быстрая сетевая карта сама по себе не гарантирует равномерную загрузку процессоров. При приёмке полезно проверить число очередей, связанные с ними IRQ и то, на каких CPU эти прерывания обслуживаются.
Карта понятия
Что подтверждено
RSS распределяет принятые пакеты по нескольким аппаратным очередям: сетевая карта относит пакеты к потокам и направляет каждый поток в выбранную очередь, которая может обрабатываться отдельным CPU.
Граница применимости: Linux networking scaling documentation; конкретный алгоритм хеширования и число очередей зависят от сетевой карты и драйвера.
Для каждой очереди приёма RSS документация Linux описывает отдельное IRQ; при MSI-X такие прерывания можно направлять на конкретные CPU.
Граница применимости: Многоочередная сетевая карта с поддерживаемым драйвером и MSI-X; точная схема зависит от устройства.
Активное соответствие очередей приёма и IRQ можно определить по /proc/interrupts.
Граница применимости: Linux и драйвер, публикующий соответствующие IRQ; название интерфейса и подписи зависят от драйвера.
Документация Linux рекомендует распределять приёмные прерывания между CPU, когда обработка прерываний становится узким местом; это уменьшает длину очередей, но не является гарантией одинакового ускорения любой нагрузки.
Граница применимости: Раздел Suggested Configuration документа Linux; это рекомендация по настройке, а не нормативное требование для любой системы.
Если в системе работает irqbalance, он может менять назначения IRQ и тем самым переопределять ручную привязку прерываний.
Граница применимости: Linux-система с запущенным irqbalance; конкретная политика зависит от его конфигурации.
Что проверить
- Проверьте число очередей приёма и убедитесь, что RSS действительно включён для нужного интерфейса.
- Сопоставьте очереди с IRQ по /proc/interrupts.
- Проверьте, на каких CPU обслуживаются эти IRQ, и сравните распределение с NUMA-топологией сервера.
- Если меняете привязку вручную, проверьте, не управляет ли теми же IRQ служба irqbalance.
Первоисточники
- Scaling in the Linux Networking Stack
RSS, RPS, RFS и XPS; для этой партии использованы разделы RSS/RPS и замечание об irqbalance.
Связанные понятия
Курсы по теме
Следующий шаг
Сформулируйте задачу и уточните требования к своей системе.
Подготовить подбор с ДелектусомОткроется черновик вопроса. Отправьте его, когда будете готовы.