Major performance/stability regression in virtio network drivers between 9.2-RELEASE and 10.0-RC5
Rick Macklem
rmacklem at uoguelph.ca
Sun Jan 19 15:34:45 UTC 2014
Alfred Perlstein wrote:
> What does vmstat say about memory zones? I think vmstat -m/vmstat -z
> and also netstat -m?
>
> Are you set with the same mbufs on both 9 and 10?
>
> -Alfred
>
>
> On 1/18/14 1:32 PM, Eric Dombroski wrote:
> > Adrian:
> >
> > Yes, no change.
> >
> > -Eric
> >
Really replying to Eric and not Alfred, but I didn't keep the previous
post.
A couple of other tricks you could try:
- setting rsize=32768,wsize=32768 options on the mount. Sometimes the
large bursts of packets overloads the net interface and reducing
read/write data size makes the bursts smaller (32K about half of the
64K default).
- I have no idea if these virtual interfaces have such an option, but
setting a net interface to half duplex sometimes worked around these
kinds of issues in the past. Most TCP connections transfer data in
one direction with only ACKs going the other way, so problems with
packets going both in and out concurrently don't get detected. NFS
moves RPC request/reply messages in both directions concurrently and
can tickle these problems.
And, as Alfred said, looking at the mbuf allocations might also give a
hint as to what is going on.
Good luck with it, rick
> >
> >
> >
> >
> > On Sat, Jan 18, 2014 at 4:06 PM, Adrian Chadd
> > <adrian.chadd at gmail.com>wrote:
> >
> >> Hi,
> >>
> >> Have you tried disabling tso?
> >>
> >> Adrian
> >> On Jan 18, 2014 1:52 PM, "Eric Dombroski" <eric at edombroski.com>
> >> wrote:
> >>
> >>> Hello:
> >>>
> >>> I believe there is a major performance regression between FreeBSD
> >>> 9.2-RELEASE and 10.0-RC5 involving the virtio network drivers
> >>> (vtnet) and
> >>> handling incoming traffic. Below are the results of some iperf
> >>> tests and
> >>> large dd operations over NFS. Write throughput goes from ~40Gbps
> >>> to
> >>> ~2.4Gbps from 9.2 to 10.0RC5, and over time the connection
> >>> becomes
> >>> unstable
> >>> ("no buffer space available"), requiring the interface to be
> >>> taken
> >>> down/up.
> >>>
> >>>
> >>> These results are on fresh installs of 9.2 and 10.0RC5, no sysctl
> >>> tweaks
> >>> on
> >>> either system.
> >>>
> >>> I can't reproduce this using an Intel 1Gbps ethernet through PCIe
> >>> passthrough, although I suspect the problem manifests itself over
> >>> 1Gbps
> >>> speeds anyway.
> >>>
> >>> Tests:
> >>>
> >>> Client (host):
> >>> root at gogo:~# uname -a
> >>> Linux gogo 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
> >>> GNU/Linux
> >>> root at gogo:~# kvm -version
> >>> QEMU emulator version 1.1.2 (qemu-kvm-1.1.2+dfsg-6, Debian),
> >>> Copyright
> >>> (c) 2003-2008 Fabrice Bellard
> >>> root at gogo:~# lsmod | grep vhost
> >>> vhost_net 27436 3
> >>> tun 18337 8 vhost_net
> >>> macvtap 17633 1 vhost_net
> >>>
> >>>
> >>> Command: iperf -c 192.168.100.x -t 60
> >>>
> >>>
> >>> Server (FreeBSD 9.2 VM):
> >>>
> >>> root at umarotest:~ # uname -a
> >>> FreeBSD umarotest 9.2-RELEASE-p3 FreeBSD 9.2-RELEASE-p3
> >>> #0: Sat Jan
> >>> 11 03:25:02 UTC 2014
> >>> root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
> >>> amd64
> >>> root at umarotest:~ # iperf -s
> >>> ------------------------------------------------------------
> >>> Server listening on TCP port 5001
> >>> TCP window size: 64.0 KByte (default)
> >>> ------------------------------------------------------------
> >>> [ 4] local 192.168.100.44 port 5001 connected with
> >>> 192.168.100.1
> >>> port 58996
> >>> [ ID] Interval Transfer Bandwidth
> >>> [ 4] 0.0-60.0 sec 293 GBytes 41.9 Gbits/sec
> >>> [ 5] local 192.168.100.44 port 5001 connected with
> >>> 192.168.100.1
> >>> port 58997
> >>> [ 5] 0.0-60.0 sec 297 GBytes 42.5 Gbits/sec
> >>> [ 4] local 192.168.100.44 port 5001 connected with
> >>> 192.168.100.1
> >>> port 58998
> >>> [ 4] 0.0-60.0 sec 291 GBytes 41.6 Gbits/sec
> >>> [ 5] local 192.168.100.44 port 5001 connected with
> >>> 192.168.100.1
> >>> port 58999
> >>> [ 5] 0.0-60.0 sec 297 GBytes 42.6 Gbits/sec
> >>> [ 4] local 192.168.100.44 port 5001 connected with
> >>> 192.168.100.1
> >>> port 59000
> >>> [ 4] 0.0-60.0 sec 297 GBytes 42.5 Gbits/sec
> >>>
> >>> While pinging out from the server to the client, I do not
> >>> get any
> >>> errors.
> >>>
> >>>
> >>> root at umaro:~ # uname -a FreeBSD umaro 10.0-RC5 FreeBSD
> >>> 10.0-RC5 #0
> >>> r260430: Wed Jan 8 05:10:04 UTC 2014
> >>> root at snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC
> >>> amd64
> >>> root at umaro:~ # iperf -s
> >>> ------------------------------------------------------------
> >>> Server listening on TCP port 5001
> >>> TCP window size: 64.0 KByte (default)
> >>> ------------------------------------------------------------
> >>> [ 4] local 192.168.100.5 port 5001 connected with
> >>> 192.168.100.1
> >>> port
> >>> 50264
> >>> [ ID] Interval Transfer Bandwidth
> >>> [ 4] 0.0-60.0 sec 16.7 GBytes 2.39 Gbits/sec
> >>> [ 5] local 192.168.100.5 port 5001 connected with
> >>> 192.168.100.1
> >>> port
> >>> 50265
> >>> [ 5] 0.0-60.0 sec 18.3 GBytes 2.62 Gbits/sec
> >>> [ 4] local 192.168.100.5 port 5001 connected with
> >>> 192.168.100.1
> >>> port
> >>> 50266
> >>> [ 4] 0.0-60.0 sec 16.8 GBytes 2.40 Gbits/sec
> >>> [ 5] local 192.168.100.5 port 5001 connected with
> >>> 192.168.100.1
> >>> port
> >>> 50267
> >>> [ 5] 0.0-60.0 sec 16.8 GBytes 2.40 Gbits/sec
> >>> [ 4] local 192.168.100.5 port 5001 connected with
> >>> 192.168.100.1
> >>> port
> >>> 50268
> >>> [ 4] 0.0-60.0 sec 16.8 GBytes 2.41 Gbits/sec
> >>>
> >>> *** While pinging out from the server to client, frequent
> >>> "ping:
> >>> sendto: No space left on device" errors ***
> >>>
> >>>
> >>> After a while, I can also reliably re-produce more
> >>> egregious "ping:
> >>> sendto: No buffer space available" errors after doing a large
> >>> sequential
> >>> write over NFS:
> >>>
> >>> mount -t nfs -o rsize=65536,wsize=65536 192.168.100.5:
> >>> /storage/shared
> >>> /mnt/nfs
> >>> dd if=/dev/zero of=/mnt/nfs/testfile bs=1M count=30000
> >>>
> >>> I am going to file a freebsd bug report as well.
> >>>
> >>> Thanks,
> >>> Eric
> >>> _______________________________________________
> >>> freebsd-stable at freebsd.org mailing list
> >>> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> >>> To unsubscribe, send any mail to
> >>> "freebsd-stable-unsubscribe at freebsd.org"
> >>>
> > _______________________________________________
> > freebsd-stable at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> > To unsubscribe, send any mail to
> > "freebsd-stable-unsubscribe at freebsd.org"
> >
>
> _______________________________________________
> freebsd-stable at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to
> "freebsd-stable-unsubscribe at freebsd.org"
>
More information about the freebsd-stable
mailing list