How to improve network performance between two Win 2008 KMV guest having virtio driver already

kvm-virtualizationvirtualizationwindows-server-2008

I have two physical servers with Ubuntu 10.04 server on them. They are connected with a 1Gbps card over a gigabit switch. Each of these host servers has one Win 2008 guest VM. Both VMs are well provisioned (4 cores, 12GB RAM), RAW disks.

My asp.net/sql server applications are running much slower compared to very similar physical setups.

Both machines are setup to use virtio for disk and network. I used iperf to check network performance and I get:
Physical host 1 —–> Physical Host 2: 957 Mbits/sec
Physical host 1 —–> Win 08 Guest 1: 557 Mbits/sec
Win 08 Guest 1 —–> Phy host 1: 182 Mbits/sec
Win 08 Guest 1 —–> Win 08 Guest 2: 111 Mbits /sec

My app is running on Win08 Guest 1 and Guest 2 (web and db). There is a huge drop in network throughput (almost 90%) between the two guest. Further the throughput does not seem to be symmetric between host and guest as well.

The CPU utilization on the guests and hosts is less than 2% right now (we are just testing right now).

Apart from this, there have been random slow downs in the network to as low as 1 Mbits/sec making the whole application unusable.

Any help to trouble shoot this would be appreciated.

Best Answer

  1. What host OS is used?
  2. for every one of the NICs ethtool -k $NIC and it's probably a good idea to disable offloads with 'ethtool -K $NIC tso off ; ethtool -K $NIC gso off'
  3. bridged or NAT networking?
  4. Where are the virtio drivers from? Are they signed?
  5. IPv4 or 6?
  6. is ToE enabled in the guests?