Queue outside please!

New toys you say?

More gadgets Q?

 

Noticed this little gem in the MikroTik wiki this morning while reviewing Queue Types.

Note: Starting from v5.8 there is new kind none and new default queue only-hardware-queue. All RouterBOARDS will have this new queue type set as default interface queue

only-hardware-queue leaves interface with only hw transmit descriptor ring buffer which acts as a queue in itself. Usually at least 100 packets can be queued for transmit in transmit descriptor ring buffer. Transmit descriptor ring buffer size and the amount of packets that can be queued in it varies for different types of ethernet MACs.

Having no software queue is especially beneficial on SMP systems because it removes the requirement to synchronize access to it from different cpus/cores which is expensive.

multi-queue-ethernet-default can be beneficial on SMP systems with ethernet interfaces that have support for multiple transmit queues and have a linux driver support for multiple transmit queues. By having one software queue for each hardware queue there might be less time spent for synchronizing access to them.

Note: having possibility to set only-hardware-queue requires support in ethernet driver so it is available only for some ethernet interfaces mostly found on RBs.

Note: improvement from only-hardware-queue and multi-queue-ethernet-default is present only when there is no “/queue tree” entry with paticular interface as a parent.

What does this mean in laymans terms?

1. The only-hardware-queue will be available initially only for Routerboard devices and perhaps some other supported ethernet chipsets in the future.

2. The basic interface queueing is removed from being passed to the CPU and done on the interface hardware directly which should result in a net performance increase.

3. For SMP (x86 boxes with multiple CPU cores) machines with high end interfaces (1GB, 10GB) there is a queue type that allows a queue to be broken up across multiple CPU cores to match the multiple TX and RX chains offered on these interfaces.

Advertisement

3 thoughts on “Queue outside please!

  1. The “only-hardware-queue” is available only for Routerboard devices, but one can freely create new queue type of ‘none’ and assign it to any interface on any hardware…

    Any real life tests?..

  2. Could you please explain a little more.

    By default, is a queue being used? Like in the sense of a buffer. Or does the above only apply if you are using queues for QoS or traffic shaping?

    thanks,
    Jeroen

  3. Hi Jeroen,

    By default each interface has a queue applied to it (what’s applied is visible under ‘/queue interface print’).

    By selecting the only-hardware-queue option you’re effectively setting the queue attached to that interface to 0; meaning the only queue assigned directly to the interface is whatever is built into the interface hardware. This is separate to whatever simple-queue or queue-tree queues you have in place.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.