Hi, What sort of network transfer rates should I be expecting between a windows guest (e.g. w2012r2) and it's linux host, and what can I do to diagnose any issues and improve the transfer rate?
I'm getting very slow network transfer rates between a windows guest (wguest) and it's linux host, e.g.: 7.95 Mbit/sec <<< wguest to host 983 Mbit/sec <<< host to wguest By comparison, this is an identically configured linux guest (lguest) on the same host: 12.5 GBit/sec <<< lguest to host 14.9 GBit/sec <<< host to lguest Yes, that's Mbit/s for windows and Gbit/s for linux, i.e. 3 orders of magnitude difference! The host is: 2 x Xeon E5620 2.4GHz, 96GB debian wheezy linux-3.10.25 libvirt-1.2.1 qemu-1.7.0 (also tried 1.5, same results) openvswitch-2.0.1 (also tried standard bridging, same results) The linux guest is stock debian wheezy. The windows guest is w2012r2. The guests are running identical qemu configs (generated by libvirt), including using tap/virtio networking, e.g.: qemu-system-x86_64 \ -enable-kvm \ -name nettest \ -S \ -machine pc-i440fx-1.5,accel=kvm,usb=off \ -cpu qemu64,hv_relaxed \ -m 4096 \ -realtime mlock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ -no-user-config \ -nodefaults \ -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/nettest.monitor,server,nowait \ -mon chardev=charmonitor,id=monitor,mode=control \ -rtc base=localtime \ -no-shutdown \ -boot strict=on \ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 \ -drive file=rbd:rbd/nettest:id=vm_otn:key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==:auth_supported=cephx\;none,if=none,id=drive-virtio-disk0,format=raw,cache=writeback \ -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \ -netdev tap,fd=27,id=hostnet0,vhost=on,vhostfd=28 \ -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:41:c9:63,bus=pci.0,addr=0x3 \ -chardev pty,id=charserial0 \ -device isa-serial,chardev=charserial0,id=serial0 \ -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/nettest.agent,server,nowait \ -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \ -device usb-tablet,id=input0 \ -vnc 127.0.0.1:1 \ -device VGA,id=video0,bus=pci.0,addr=0x2 \ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 The virtio net driver is: Driver Provider: Red Hat Inc. Driver Date: 2013-11-20 Driver Version: 61.65.104.7400 Oddly enough (to me), the transfer rate between the windows guest and Linux guest (on the same host) is much better than the transfer rate between the windows guest and the host: 2.98 GBit/sec wguest to lguest 1.88 GBit/sec lguest to wguest Windows guest to another windows guest is also very poor, although likewise (and surprisingly) faster than windows guest to host: 65.7 Mbit/sec wguest (w2012r2) to wguest2 (w2008r2) 85.9 Mbit/sec wguest2 (w2008r2) to wguest (w2012r2) I've also tested with w2008r2, and with an e1000 device instead of virtio, with similar results, e.g.: 9.27 Mbit/sec wguest to host, e1000 806 Mbit/sec host to wguest, e1000 I also tried 4KB jumbo packets with both virtio and e1000 devices (the vnet interfaces on the host are MTU:9000), which halved (i.e. bad!) the wguest->host rate and improved the host->wguest rate: 4.18 Mbit/sec <<< wguest to host, e1000, Jumbo-4088 1.25 GBit/sec <<< host to wguest, e1000, Jumbo-4088 3.60 Mbit/sec <<< wguest to host, virtio, Jumbo-4088 1.43 GBit/sec <<< host to wguest, virtio, Jumbo-4088 The transfer rates are measured using basic iperf: server# iperf -s client# iperf -c ${server} -i 5 -t 60 Cheers, Chris