I am testing the network performance of VMs in Xen and Hyper-V using Iperf and Netperf. In both hypervisors I found a Linux guest VM in different modes is having a relatively high performance than a Windows one. Even a fully virtualized Linux guest VM showed a better performance than a Windows guest VM with PV drivers.
So for each virtual machine I used the loopback address to create a client-server model on the same virtual machine. I established the same tests on all virtual machines and I didn't specify any buffer size or window size, and I left it for the tools to decide.
For instance, testing a TCP conncetion using the following commands:
iperf -c 127.0.0.1
or
netperf -H 127.0.0.1
and I have got the follwing results by Iperf on Hyper-V in 32-bit environments:
Linux (Enlightened): 18 Gbits/s Linux (Unenlightened): 10.5 Gbits/s Windows (Enlightened): 3 Gbits/s Windows (FV+IS): 0.5 Gbits/s Windows (Unenlightened): 0.4 Gbits/s
Both hypervisors and both tools showed the same performance, also in 64-bit environments.
So is there any explanation for this ?!
Note: FV+IS >> unenlightened guest VM with Integration Services installed.