如何判断 NIC 是否启用了多队列?

如何判断 NIC 是否启用了多队列?

有人能告诉我运行什么命令来确定我的 10G NIC 是在单 RX-TX 队列模式还是多队列模式运行吗?根据cat /proc/interrupts

root@hostname:scripts]# cat /proc/interrupts | grep ens1f0
  94:  360389979          0          0          0        184          0        330          0          0          0          0          0          0          0          0          0          0        169          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ens1f0-TxRx-0
  95:          4          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ens1f0

如果它以单队列模式运行,我该如何启用多队列?

答案1

ethtool -l <interface>

将显示与接口关联的队列状态(如果该接口的驱动程序支持此功能)。在 ethtool-land 中,多队列由“通道”表示。

如果您看到来自 ethtool 的类似响应:

homeserver-02 ~ # ethtool -l enp4s0
Channel parameters for enp4s0:
Cannot get device channel parameters
: Operation not supported
homeserver-02 ~ #

那么你的网卡驱动不支持多队列。如果你认为应该,确保您正在使用与您的 NIC 最匹配的驱动程序,升级到最新的稳定内核以查看该功能是否已启用,并检查 NIC 是否有特殊的固件要求。

此外,作者提供了更多信息https://blog.cloudflare.com/how-to-achieve-low-latency/可能对 10Gb 以太网低延迟调整有用。

$ man ethtool # for reference on -l and -L

干杯!希望这能有所帮助。

答案2

您可以通过以下方式查看有多少个可用队列: ethtool -S [interface]

如果您启用了多个队列,它们将会显示出来。此外,您还可以使用 watch 命令观察 rx (tx) 队列上的流量:

watch -d -n 2 "ethool -S [interface] | grep rx | grep packets | column

对于过滤队列,使用: tc qdisc show dev [interface]

如果您有 ADq 或 DCB 队列,它们将显示在这里。

答案3

文档位于https://www.kernel.org/doc/Documentation/networking/multiqueue.txt有许多有用的概念,并使用tc命令来操作可用的多队列参数。如果不知道您的意图,很难给出具体的答案,但这些信息应该可以为您指明正确的方向。

相关内容