RFS Linux: сетевую обработку приближают к приложению, а не просто размазывают по CPU

Запросить

Фотография конкретного исполнения не приложена.

Равномерное распределение пакетов не всегда даёт хорошую cache locality. Если приложение потребляет данные на другом CPU, появляются дополнительные обращения к памяти. RFS учитывает расположение потока приложения и пытается приблизить к нему protocol processing.

Документация отличает RFS от обычного hash-based RPS. Глобальная таблица отражает желаемый CPU, а состояние очереди учитывает ещё ожидающие пакеты. Это нужно, чтобы перемещение обработки вслед за приложением не создало нежелательный reorder уже поставленных в backlog данных.

RFS не является командой закрепить приложение на выбранном ядре. Планировщик и affinity приложения остаются отдельными механизмами. Также нужны согласованные размеры и включение необходимых таблиц; один выставленный параметр не доказывает, что весь путь действительно работает как ожидалось.

В приёмке наблюдают CPU приложения и сетевой обработки при обычной работе и миграции. Сравнивают cache locality, drops и задержку. Проверяют полезный эффект на реальном числе потоков. Название RFS в конфигурации не заменяет измерение: подходящая схема зависит от поведения потребителя, аппаратной топологии и стоимости переноса пакетов.

Основание — Official versioned Linux network documentation displaying6.18.0, networking/bonding, scaling and bridge, разделы RFS: Receive Flow Steering; global and per-queue tables. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — официальная версия документации Linux с заголовком 6.18.0. Это фиксированная редакция, а не утверждение об установленном или последнем ядре. Реальные NIC, драйвер, switch и параметры хоста не проверялись; настройки и сетевые испытания не выполнялись.

Все разборы

Россия Казахстан
office@apocalypsemoto340.ru

Все запросы только на email