The most common bottleneck is disk I/O as this is frequently the most limiting resource - the disks are only so fast, there are only so many read / write heads, etc.
This can be compounded by the workloads in your VMs. If you have a VDI deployment and you boot a bunch of VMs at the same time, they all kill each other because booting and shutting down are extremely high disk I/O activities.
Beyond disk I/O there are possible networking issues, there is also application and threading issues, and there are issues simply introduced by VM configurations (too many virtual processors is the most common) - these are the most common killers of VMs that I have seen in 6+ years
The way to truly understand your bottleneck is to only run one VM - how does it perform? What is it doing? If you open Task Manager in the VM is there a particular process that is taking a lot of the processor time (don't use Perf Mon for this).
Does the application page to disk (not just the OS in the VM)? Are all the VMs doing the same thing at the same time? Is the behavior only evident when doing soemthing with the VM over the network?
If this is the issue, method 3 in this article always works: http://support.microsoft.com/kb/888750
In the end your throughput is limited by your physical layer, NIC, port, switch. And the protocol you use also has impact. for example iSCSI should have considerably higher throughput than SMB. And NFS would also have higher throughput than SMB. In turn SMB2 is higher than SMB.
You state that you have tried all three types of virtual networks. So, that means that your test must be VM to VM, on the same host. This is where network throughput depends on lots of things.
BTW - if you are going VM to Management OS there is a big performance hit when the management network is shared with an External Virtual Network - this has gotten smaller over time, but it still exists it used to be 40%.
Back to the VM to VM test - if you are VM to VM then you can be impacted by storage I/O, especially if the VMs are on the same physical volume. One reading from and the other writing to can cause what appears to be a network issue, but is really a storage issue.
Richard Mueller edited Revision 12. Comment: Modified title casing, added tags
Carsten Siemens edited Revision 10. Comment: fixed typo
FZB edited Revision 9. Comment: typo
FZB edited Revision 8. Comment: typo
FZB edited Revision 7. Comment: typos
FZB edited Revision 6. Comment: typo
FZB edited Revision 5. Comment: typo
FZB edited Revision 4. Comment: typo
FZB edited Revision 3. Comment: typo
FZB edited Revision 2. Comment: added TOc
tonysoper_MSFT edited Revision 1. Comment: typo