Практикум по серверным сетям

Сетевые потоки Linux: RFS, Accelerated RFS и XPS

Практикум связывает CPU приложения, RFS и аппаратные очереди сетевой карты. Вы научитесь проверять RFS, Accelerated RFS и XPS без обещаний ускорения по одной настройке.

База → пресейл и приёмка45 минут4 модуля8 вопросов
После курса

Что вы сможете сделать

  1. Объяснять, чем RFS отличается от RPS и зачем ему CPU приложения.
  2. Проверять условия работы Accelerated RFS и связь с IRQ очередей.
  3. Разбирать карту XPS и отделять настройку очередей от измеренного результата.
Модуль 1 из 4

1. Свяжите поток с CPU приложения

RFS добавляет к распределению RPS знание о том, где работает приложение, читающее сетевой поток.

  • RFS использует механизмы RPS, но выбирает CPU с учётом того, где приложение обрабатывает поток.

  • rps_sock_flow_table хранит желаемый CPU потока и обновляется при работе пользовательского кода с сокетом.

  • Для каждой очереди приёма rps_dev_flow_table хранит текущий CPU и состояние очереди потока.

  • При миграции приложения RFS не переносит поток безусловно: он учитывает ещё не обработанные пакеты, чтобы не нарушить порядок.

Модуль 2 из 4

2. Проверьте включение RFS и Accelerated RFS

RFS и его аппаратное ускорение включаются разными условиями. Одна настройка не подтверждает работу всей цепочки.

  • Для RFS нужны и общий rps_sock_flow_entries, и rps_flow_cnt конкретной очереди.

  • Accelerated RFS передаёт выбор очереди сетевой карте на основе состояния RFS.

  • При изменении соответствия потока CPU Linux вызывает ndo_rx_flow_steer, а драйвер программирует сетевую карту.

  • Для Accelerated RFS нужны CONFIG_RFS_ACCEL, поддержка сетевой карты и драйвера и включённая n-tuple фильтрация.

  • Карта CPU → аппаратная очередь для Accelerated RFS строится из IRQ affinity очередей.

Модуль 3 из 4

3. Разберите очереди передачи XPS

XPS работает на передаче и выбирает TX-очередь по карте CPU или по связи с очередью приёма.

  • XPS выбирает аппаратную очередь передачи на многоочередном сетевом устройстве.

  • xps_cpus связывает CPU с TX-очередью, а xps_rxqs — RX-очередь с TX-очередью.

  • Выбранная очередь сохраняется для потока; менять её без риска нарушения порядка можно не в любой момент.

  • При одной TX-очереди XPS не влияет на выбор очереди.

  • Если карта RX-очередей не подходит, XPS возвращается к выбору по карте CPU.

Модуль 4 из 4

4. Соберите проверяемый протокол

Хороший протокол отделяет настройки RFS/XPS от результата измерения и сохраняет границы каждого механизма.

  • Для RFS сохраните rps_sock_flow_entries и rps_flow_cnt по очередям.

  • Для Accelerated RFS отдельно подтвердите поддержку ядра, драйвера, сетевой карты и n-tuple фильтрации.

  • Для XPS сохраните число TX-очередей и обе карты sysfs.

  • После изменений сравните задержку, производительность и загрузку CPU на целевой нагрузке; карта очередей сама по себе не доказывает ускорение.

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01RPS распределяет обработку по CPU, но приложение читает поток на другом CPU. Что добавляет RFS?
02Администратор задал rps_sock_flow_entries, но rps_flow_cnt у очереди оставил нулевым. Какой вывод верен?
03Поток приложения переехал на другой CPU, а на старом CPU ещё есть пакеты этого потока. Почему RFS может отложить смену CPU?
04В системе настроен обычный RFS. Что ещё нужно подтвердить для Accelerated RFS?
05Какая пара sysfs-настроек относится к картам XPS для очереди передачи?
06У интерфейса только одна аппаратная TX-очередь. Что даст настройка XPS именно для выбора очереди?
07Почему XPS сохраняет выбранную TX-очередь для последующих пакетов потока?
08После настройки RFS и XPS схема CPU и очередей выглядит логично. Какой вывод корректен для приёмки?

Следующий шаг

Сформулируйте задачу и уточните требования к своей системе.

Подготовить подбор с Делектусом

Откроется черновик вопроса. Отправьте его, когда будете готовы.

Проверяемая база

Источники курса

Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.

  • Официальная документация

    Scaling in the Linux Networking Stack

    Linux Kernel · Linux kernel documentation; страница проверена 19 сентября 2026 года

    RSS, RPS, RFS и XPS; для этой партии использованы разделы RSS/RPS и замечание об irqbalance.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие