Subject: Re: utilizing multi queues of a net device

From: Jakub Kicinski <[email-masked]>
Date: Mon, 2 May 2022 09:21:34 -0700

On Mon, 2 May 2022 04:29:09 +0000 Eli Cohen wrote:
> Hi all,
> 
> I am experimenting with virtio net device running on a host. The net device has
> multiple queues and I am trying to measure the throughput while utilizing all
> the queues simultaneously. I am running iperf3 like this:
> 
> taskset 0x1 iperf3 -c 7.7.7.24 -p 20000 & \
> taskset 0x2 iperf3 -c 7.7.7.24 -p 20001 & \
> ...
> taskset 0x80 iperf3 -c 7.7.7.24 -p 20007
> 
> Server instances with matching ports exist.
> 
> I was expecting traffic to be distributed over the available send queues but
> the vast majority goes to a single queue. I do see a few packets going to other
> queues.
> 
> Here's what tc qdisc shows:
> 
> tc qdisc show dev eth1
> qdisc mq 0: root
> qdisc fq_codel 0: parent :8 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :7 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :6 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :5 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> qdisc fq_codel 0: parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> 
> Any idea?

Make sure XPS is configured correctly. Looks like virtio_net cooked 
a less-than-prevalent-for-networking way of distributing CPUs.