qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-discuss] Windows guest to linux host network performance


From: Chris Dunlop
Subject: [Qemu-discuss] Windows guest to linux host network performance
Date: Thu, 20 Feb 2014 14:46:50 +1100
User-agent: Mutt/1.5.21 (2010-09-15)

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]