有人能告诉我运行什么命令来确定我的 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
命令来操作可用的多队列参数。如果不知道您的意图,很难给出具体的答案,但这些信息应该可以为您指明正确的方向。