跳转至

RSS/RPS/XPS

是什么 / 解决什么问题

多队列网卡可以把不同流量分散到多个 RX/TX queue。RSS/RPS/XPS 解决的是网络包应该由哪个 CPU 处理,以及如何减少跨 CPU/cache/NUMA 跳转。

概念

机制 位置 作用
RSS 网卡硬件 根据 hash 把流分到 RX queue
RPS 内核软件 把收包处理分发到其他 CPU
XPS 内核软件 选择发包 TX queue

RSS 通常是首选,因为它在硬件层面完成分发。RPS 更灵活,但会引入跨 CPU 调度和 cache 成本。

查看配置

ethtool -l <iface>
ethtool -x <iface>
ls /sys/class/net/<iface>/queues/
cat /proc/interrupts

调优原则

  1. 同一连接或同一 symbol 的流量尽量落到稳定 CPU。
  2. RX queue IRQ、softirq、应用线程尽量靠近。
  3. 避免跨 NUMA node 收包再处理。
  4. 对 UDP multicast,要特别关注多个 socket/进程的分发方式。

面试高频问题

为什么多队列后延迟反而变差

可能是流量 hash 不均、IRQ 绑定不合理、业务线程和 softirq 跨 CPU、NUMA 远端访问,或者 cache locality 被破坏。多队列提高并行度,但不是自动降低延迟。