Linux Traffic Control: qdisc mq

Solution 1:

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