确保多个 TCP 连接使用不同的 RX 和 TX 队列以及性能影响?

问题描述 投票:0回答:1

(Linux)

我正在考虑使用相同的网络接口卡 (NIC),但连接到不同 IP 地址的 2-3 个 TCP 连接。每个连接都有自己的线程和专用的 CPU 内核。

我知道 NIC 有多个接收和传输队列:

  1. 如何确保每个连接都有自己的 RX 和 TX 队列?我是否需要设置任何特定的套接字选项,或者这是由驱动程序/卡在 IP 地址等元组上散列自动完成的?

  2. 共享接口对性能有何影响?我假设 Linux IP/TCP 堆栈中不会发生争用?唯一的竞争将在硬件中进行,因为它会在不同的 RX/TX 队列的推送/弹出之间切换?如果是这样,几十个 CPU 周期?

performance optimization linux-kernel network-programming nic
1个回答
0
投票

不清楚您需要确保每个连接在 NIC 上都有自己的 RX/TX 队列对。这完全取决于每个连接将/必须进行的速度,以及您的 CPU 相对于这些速率的性能如何。

而且,根据您拥有的 NIC,您实际上可能没有向主机公开多个 RX/TX 队列。您可以使用“ethtool -l”进行检查

© www.soinside.com 2019 - 2024. All rights reserved.