I recently was engaged on a case where a customer was not able to achieve the network throughput required to satisfy business requirements, even though the network was a virtual switch (vswitch) within a VMware hypervisor and the communication was between two guests within the same hypervisor (HOST).
Do you have memory interleaving enabled? Node level? Channel Level? Bank Level?