how to tell if NIC has multiqueue enabled?

Can anyone tell me what command i run to determine if my 10G NIC is running in single RX-TX queue mode or multiqueue? It looks like it only has 1 RX/TX queue according to 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

If it is operating in single queue mode, how would I enable multiqueue ?


ethtool -l <interface>

will display the status of queues associated with an interface, if that interface's driver supports such a thing. In ethtool-land, multiqueue is indicated by "channels".

If you see responses from ethtool like:

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

then your NIC driver doesn't support multiqueue. If you think it should, make sure you are using the best-matched driver for your NIC, upgrade to the latest stable kernel to see if that feature has been enabled, and check if there are special firmware requirements for the NIC.

Also, more information from the writer of https://blog.cloudflare.com/how-to-achieve-low-latency/ might be useful for 10Gb Ethernet tuning for low-latency.

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

Cheers! Hope that helps.


The documentation at https://www.kernel.org/doc/Documentation/networking/multiqueue.txt has a number of useful concepts and uses the tc command to manipulate the available multiqueue parameters. Without knowing your intentions, it's difficult to give a specific answer, but this information should get you pointed in the right direction.


You can see how many queues that you have available with: ethtool -S [interface]

If you have multiple queues enabled, they will show up. In addition you can watch traffic on the rx (tx) queues with the watch command:

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

For Filtering Queues, use: tc qdisc show dev [interface]

If you have ADq or DCB queues they will show up here.