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 成本。
查看配置¶
调优原则¶
- 同一连接或同一 symbol 的流量尽量落到稳定 CPU。
- RX queue IRQ、softirq、应用线程尽量靠近。
- 避免跨 NUMA node 收包再处理。
- 对 UDP multicast,要特别关注多个 socket/进程的分发方式。
面试高频问题¶
为什么多队列后延迟反而变差¶
可能是流量 hash 不均、IRQ 绑定不合理、业务线程和 softirq 跨 CPU、NUMA 远端访问,或者 cache locality 被破坏。多队列提高并行度,但不是自动降低延迟。