Практикум по серверным сетям
Сетевые потоки Linux: RFS, Accelerated RFS и XPS
Практикум связывает CPU приложения, RFS и аппаратные очереди сетевой карты. Вы научитесь проверять RFS, Accelerated RFS и XPS без обещаний ускорения по одной настройке.
Что вы сможете сделать
- Объяснять, чем RFS отличается от RPS и зачем ему CPU приложения.
- Проверять условия работы Accelerated RFS и связь с IRQ очередей.
- Разбирать карту XPS и отделять настройку очередей от измеренного результата.
1. Свяжите поток с CPU приложения
RFS добавляет к распределению RPS знание о том, где работает приложение, читающее сетевой поток.
RFS использует механизмы RPS, но выбирает CPU с учётом того, где приложение обрабатывает поток.
rps_sock_flow_table хранит желаемый CPU потока и обновляется при работе пользовательского кода с сокетом.
Для каждой очереди приёма rps_dev_flow_table хранит текущий CPU и состояние очереди потока.
При миграции приложения RFS не переносит поток безусловно: он учитывает ещё не обработанные пакеты, чтобы не нарушить порядок.
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. Разберите очереди передачи XPS
XPS работает на передаче и выбирает TX-очередь по карте CPU или по связи с очередью приёма.
XPS выбирает аппаратную очередь передачи на многоочередном сетевом устройстве.
xps_cpus связывает CPU с TX-очередью, а xps_rxqs — RX-очередь с TX-очередью.
Выбранная очередь сохраняется для потока; менять её без риска нарушения порядка можно не в любой момент.
При одной TX-очереди XPS не влияет на выбор очереди.
Если карта RX-очередей не подходит, XPS возвращается к выбору по карте CPU.
4. Соберите проверяемый протокол
Хороший протокол отделяет настройки RFS/XPS от результата измерения и сохраняет границы каждого механизма.
Для RFS сохраните rps_sock_flow_entries и rps_flow_cnt по очередям.
Для Accelerated RFS отдельно подтвердите поддержку ядра, драйвера, сетевой карты и n-tuple фильтрации.
Для XPS сохраните число TX-очередей и обе карты sysfs.
После изменений сравните задержку, производительность и загрузку CPU на целевой нагрузке; карта очередей сама по себе не доказывает ускорение.
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Следующий шаг
Сформулируйте задачу и уточните требования к своей системе.
Подготовить подбор с ДелектусомОткроется черновик вопроса. Отправьте его, когда будете готовы.
Источники курса
Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.
- Официальная документация
Scaling in the Linux Networking Stack
Linux Kernel · Linux kernel documentation; страница проверена 19 сентября 2026 года
RSS, RPS, RFS и XPS; для этой партии использованы разделы RSS/RPS и замечание об irqbalance.
Открыть первоисточник