Hi Everyone!
I am experiencing a problem where Hyper-V guest virtual machines show very high CPU usage on core 0 (causing other applications to slow down and the VM to be less responsive) with what I would consider to be relatively little network traffic. There is a
definite correlation between network traffic and CPU usage as the former always brings the later.
Occasionally, I can achieve 90-100MBps on some servers going through a VM Bus Network Adapter connected to a dual gigabit physical adapter team, but, this gives 60-90% CPU usage on core 0 inside the VM with all other cores showing ~0% usage. Most of the
time, 50-80MBps will give the same 60-90% CPU usage on core 0. This seems to happen regardless of the number of cores assigned to the VM, 1-4 makes no difference.
I am aware that RSS is not supported on VM Bus Network Adapters, to spread the load across the available cores, but I thought that using a VM Bus Network Adapter was meant to be some what faster due to it having a direct connection to the physical host server.
I have also configured VMQ, to try and speed things up.
It seems to me that the speed of the network connection is limited by the speed of the processor. With the general rule of thumb that a 1 Gbps adapter with no offloading capabilities will use 1Ghz worth or processing power, adding 25% for a VM giving 1.25Ghz,
meaning that my VM with 2.6Ghz CPU and 10Gbps VM Bus Network Adapter is only capable of 2Gbps throughput maximum, and wont be able to do anything else whilst doing that due to CPU 0 being maxed out even if the rest of the cores aren't.
The bottom line is that I seem to be missing the point, or missing a vital piece of information, that will allow high network bandwidth without bottlenecking at CPU 0 on my VM's.
How can I achieve high network throughput on VM's without wasting valuable CPU cycles? Is it possible to offload processing from the VM to elsewhere?
For clarity, our setup is as follows:
Hyper-V Hosts
2 x Dell PER715 with 2 x 8 Core AMD Op 6140, 64GB RAM, 12 x Bcm 5709C NICs with TOE and iSCSI Offload
Windows Server 2008 R2 Datacentre SP1 in a 2 node Hyper-V failover cluster
All software, firmware and drivers up to date
VMQ configured and enabled for all virtual networks
Hyper-V Guests
Any Windows Server 2008 R2 SP1
SAN
2 Node DataCore iSCSI SAN on the back end
On the R715(s)
2 x iSCSI direct to the host for guest vhds
2 x iSCSI virtual network direct to guest VM
1 x Team with 2 x 1Gbps for VM access
Other NICs for cluster and management
Any help or information would be greatly appreciated. If any further information is required, please don't hesitate to ask!
Many thanks in advance,
Tom