虚拟化适合数据包密集型应用程序?

我们有一个自定义和非常定制的应用程序,在Windows 2008R2服务器上运行。 它的主要function是尽快连接到数以万计的IP地址,并询问特定的TCP端口 – 本质上是一个networking扫描器,但严格按照我们的要求定制。 服务器和目标地址之间没有NAT,应用程序不消耗任何大量的内存或CPU。

该应用程序(基于.NET)进行了优化,我们有信心代码是尽可能紧。 但是,应用程序可以通过IP地址移动的速度似乎仅限于Windows TCP堆栈和正在运行的硬件的组合 – 目前它位于低端的,几乎没有服务器级别的盒子中。

由于此应用程序的性能至关重要,因此我们计划将其转移到新的更高规格的服务器,可能是HP DL360 G8 。 但是,我们可能会同时在不同的机器上运行应用程序的多个实例,因此我想探讨使用新服务器作为虚拟主机的选项。

我们可能会使用VMWare ESXi,Hyper-V作为替代选项。 但是,我不确定在服务器上的虚拟机上运行的数据包密集型应用程序是否会简单地将瓶颈移至虚拟机pipe理程序?

DL360有4个网卡:我们可以将4个虚拟机“连接”到4个网卡中的每一个,并行运行。 VMWare / Hyper-V是否有效地将stream量直接传递到网卡,从而提供“本地”networking性能,还是在客户操作系统和硬件之间存在可能导致虚拟机监控程序包瓶颈的因素?

对于超v:这取决于。 您需要使用硬件卡,虚拟networking和NIC上的SR-VIO。 否则所有的数据包都会经过虚拟交换机,这意味着开销。 给定一个体面的网卡,这将导致一个硬件队列分配给虚拟机,这是虚拟化层得到的速度。

在VMware中,您也可以做SR-IOV,请记住,需要一个支持它的网卡。 Scott Lowe对SR-IOV的一个很好的概述,如果你不熟悉的话。 VMware还为您提供了select“DirectPath I / O”的选项,您可以直接访问pci设备,在此PDF中search“DirectPath”以获取更多信息。 另外值得一提的是,你可以在不使用DirectPath或者SR-IOV的情况下在VMware中试用它,只要你使用VMXNET3 guest虚拟机驱动,性能是非常好的。

我们在RHEV(或简称KVM)上使用SRIOV,或者如果使用Cisco UCS(使用VMFEX),也可以在刀片上使用Palo卡。

在这两种情况下的非常大的部署(5个数字服务器号码)现在工作很好。