Re: VirtIO Net Tuning

From: Michael Tuexen <tuexen_at_FreeBSD.org>
Date: Wed, 25 Mar 2026 15:55:31 UTC
> On 25. Mar 2026, at 16:20, Mark Saad <nonesuch@longcount.org> wrote:
> 
> 
> 
> On Wed, Mar 25, 2026 at 10:54 AM Michael Tuexen <tuexen@freebsd.org> wrote:
> > On 25. Mar 2026, at 15:06, Mark Saad <nonesuch@longcount.org> wrote:
> > 
> > Hello All
> >   I have been playing with FreeBSD 14.3-RELEASE and 15.0-REELASE amd64 qemu powered vms on a Linux cloud hosting setup. I have noticed that with VirtIO net ( vtnet ) interfaces there is some sort of tuning required , or there is some sort of limitation on the packets per second and overall throughput the nics can push.  I am not able to get any one interface to push more then 6Gb/s bursts and 5.5Gb/s sustained. Before I go off the deep end with details has anyone run into this , is this a known issue ?
> Hi Mark,
> 
> as indicated by Mike, there has been a lot of improvements to vtnet in 14.4 and 15.0
> such that no special tuning is required.
> If you find that some tuning is necessary to improve things, I would like to know,
> since this is not intended.
> I am not saying that the vtnet driver can't be improved, only that the default
> settings should not need tweaking.
> 
> Best regards
> Michael
> > 
> > -- 
> > mark saad | nonesuch@longcount.org
> 
> 
> Mike / Michael
>   I just tried FreeBSD 14.4 and saw the same results . The simple test is this. 
> Two VMS in the same network . Each VM has 14.4-RELEASE from using the IMAGE .
> Each VM has 8 cores 16G ram , one vtnet nic and some disk.
> 
> fish 10.240.65.6 sending to bird 10.240.65.7.
> 
> root@fish:~ # iperf3 -c 10.240.65.7 -p 8080 
> Connecting to host 10.240.65.7, port 8080
> [  5] local 10.240.65.8 port 10106 connected to 10.240.65.7 port 8080
> [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
> [  5]   0.00-1.06   sec   386 MBytes  3.04 Gbits/sec    0   1.20 MBytes       
> [  5]   1.06-2.04   sec   368 MBytes  3.17 Gbits/sec    0   2.29 MBytes       
> [  5]   2.04-3.05   sec   394 MBytes  3.26 Gbits/sec    0   3.44 MBytes       
> [  5]   3.05-4.01   sec   359 MBytes  3.14 Gbits/sec    0   3.92 MBytes       
> [  5]   4.01-5.04   sec   395 MBytes  3.22 Gbits/sec    0   3.92 MBytes       
> [  5]   5.04-6.04   sec   342 MBytes  2.86 Gbits/sec    0   3.92 MBytes       
> [  5]   6.04-7.06   sec   426 MBytes  3.48 Gbits/sec    0   3.92 MBytes       
> [  5]   7.06-8.02   sec   369 MBytes  3.25 Gbits/sec    0   3.92 MBytes       
> [  5]   8.02-9.04   sec   422 MBytes  3.46 Gbits/sec    0   3.92 MBytes       
> [  5]   9.04-10.02  sec   244 MBytes  2.08 Gbits/sec    0   3.92 MBytes       
> - - - - - - - - - - - - - - - - - - - - - - - - -
> [ ID] Interval           Transfer     Bitrate         Retr
> [  5]   0.00-10.02  sec  3.62 GBytes  3.10 Gbits/sec    0            sender
> [  5]   0.00-10.02  sec  3.61 GBytes  3.10 Gbits/sec                  receiver
What is limiting the throughput? Are you CPU limited or bandwidth limited or limited
by something else?

What tuning gives you a better throughput?

Best regards
Michael
> 
> iperf Done.
> root@fish:~ # 
> 
> Running 15.0-RELEASE was not much of a difference. 
> 
> 
> -- 
> mark saad | nonesuch@longcount.org