Linux Traffic Control: qdisc mq

linuxnetworkingtc

On my Linux system I see this:

# ip link list
....
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
....

What's qdisc mq? In http://lartc.org/lartc.html I find only information about IMQ.

In the examples in the howto there are also qdisc noop and qdisc noqueue, but no details about them.

Best Answer

A google search would have easily yielded this article from the vger kernel mailing list:

These patches contain a classful multiqueue ("mq") dummy scheduler to fix a couple of problems with the current multiqueue TC API integration. The changelogs of patch 05 and 07 contain more details.

The mq scheduler does two things:

  • present device TX queues as classes, allowing to attach different qdiscs to them, which are grafted to the TX queues

  • present accumulated statistics of all device queue root qdiscs

Its used by default for multiqueue devices instead of the regular pfifo_fast qdisc, but can also be attached manually to restore multiqueue behaviour after attaching a non-multiqueue (shared) qdisc.

Multiqueue is a feature is otherwise referenced as RSS (Receive-Side-Scaling) which basically is distributing the load of packet processing among several cores. Further reading: https://elixir.bootlin.com/linux/latest/source/Documentation/networking/scaling.rst

Related Topic