Windows Server 2008networking速度慢,Xen 3.4.3 HVM ISO

我已经在运行Xen 3.4.3-5的宿主节点上安装了运行Windows Server 2008的虚拟机,并安装了以下内核:2.6.18-308.1.1.el5xen#1 SMP Wed Mar 7 05:38:01 EST 2012 i686 i686 i386 GNU / Linux

虚拟机上的networking速度非常慢 – 使用在线速度testing,我只能达到8-9mbps。 这条线是100mbps可突发性的,主机节点在达到这些速度方面没有问题。 如果我安装一个运行CentOS(而不是Windows Server 2008)的虚拟机,那么CentOS虚拟机在实现这些速度方面没有任何问题 – 只有Win2K8的斗争。

我已经做了一些非常详尽的故障排除,但没有任何帮助:

  • Win2k8的新VM安装具有相同的networking问题。
  • 升级到最新的kernel-xen没有帮助(2.6.18-308.1.1.el5xen)。
  • 从xen 3.4.0升级到xen 3.4.3-5没有帮助。
  • 禁用Windows防火墙等没有帮助。
  • 将网卡设备configuration从自动协商更改为手动100Mbps全双工没有帮助。
  • 更改networking接收缓冲区数据包大小没有帮助(尝试从64k到8k的所有组合)。

在这一点上,我几乎没有想法 – 任何帮助将不胜感激!

编辑:我最终解决了这个问题。 见下面我接受的答案。

Windows客户机可能会遇到问题,以及它如何与虚拟网卡进行通信。 这里有一些事情要尝试:

在Windows客户端中禁用TCP烟囱卸载。 要确定它是否启用,请运行netsh int tcp show global 。 要禁用它,请运行netsh int tcp set global chimney=disabled

在Windows客户机的NIC上禁用TCP卸载。 在来宾Windows安装中,进入设备pipe理器,打开有问题的网卡,进入高级选项卡并search与TCP / UDP,校验和,largesend和/或TCP / IP卸载相关的任何选项。 禁用它们。 如果它说“卸载”禁用它。

在Windows guest虚拟机中禁用接收方缩放。 检查是否启用了netsh int tcp show global 。 禁用它与netsh int tcp set global rss=disabled

在Windows guest虚拟机中禁用NetDMA。 检查是否启用了netsh int tcp show global 。 要手动启用/禁用,需要添加一个registry项。 使用get-itemproperty -path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -name EnableTCPA检查它是否已经存在。 如果它不存在并启用NetDMA,请使用PowerShell创build以下registry项:

 New-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableTCPA New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name "EnableTCPA" -Value 0 -PropertyType "DWord" 

在Windows客户机中禁用Windowsnetworking任务卸载。 使用PowerShell检查registry项是否存在: get-itemproperty -path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -name DisableTaskOffload 。 如果不是,请使用PowerShell添加此registry项: New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name "DisableTaskOffload" -Value 1 -PropertyType "DWord"

在Windows Guest中禁用自动调整。 首先检查是否启用: Netsh interface tcp show global 。 如果是,请使用以下命令禁用它: Netsh interface tcp set global autotuning=disabled

如果启用了Windows来宾,则禁用远程差分压缩。 转到运行命令并运行appwiz.cpl,select“打开或closuresWindowsfunction”,并取消select远程差分压缩。

检查防病毒是否设置为扫描实时stream量。 可以将防病毒工具设置为扫描来自主机的所有stream量,以发现任何恶意行为。 如果您的Windows客户端是这种情况,请暂时禁用它以进行testing。


编辑1

最后的一些努力包括:

  • 我的猜测之一是有一个端口速度不匹配 – 但你解决这个问题。 除非在这方面有更多的select。
  • 我通常build议更新networking驱动程序,但这在虚拟机中是不太需要的,因为虚拟网卡是相当普通的。
  • 将最新的访客工具安装到Windows Guest中。
  • 我在Windows客户端上看到了一些IPv6问题,导致神秘的TCP / IP速度下降。 不知道为什么; 我还没有深入研究。 我想你可以从网卡上卸载/删除v6。
  • 检查Windows guest中的TCP / IP统计信息,看是否有很多错误或其他有趣的数字。 netstat -es将会诀窍。
  • 最后,但并不是最不重要的,安装networking监视器,并检查stream量的任何exception。 CRC错误,重新连接,丢包……谁知道。 任何看起来很丑的东西。

我通过为Windows中的NIC和其他组件安装Xen准虚拟化驱动程序来解决此问题。 Windows客户机上的默认驱动程序正在与Xen主机节点进行可怕的交互。 我注意到,在虚拟机上的Internet Explorer中下载文件会使主节点上的CPU达到75-90%。 为Windows Server 2008 32bit安装James Harper的GPLPV驱动程序解决了这个问题。

如果任何人有类似的问题,只需下载并安装在这里find适当的一组GPLPV驱动程序: http ://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers

但是,对于我的特定服务器,安装GPLPV驱动程序还不够。 GPLPV驱动程序将下载速度恢复到正常水平(〜66mbps),但上传速度大约为2mbps。 然后,我重新尝试了@WesleyDavid提供的提示,以禁用NICconfiguration中的所有forms的卸载(通过设备pipe理器),并且提升的上传速度高达36mbps。 我已经在其他系统上安装了GPLPV驱动程序,并且不需要修改NICconfiguration。

更新:

自从我在一年前发布这个问题以来,我已经在各种不同的Xen机器上安装了Windows。 每次安装James Harper的GPLPV驱动程序,networking性能和总体系统性能都得到了显着提高。 如果不使用Harper的GPLPV驱动程序,我从来没有能够实现完整的下载/上传速度。

任何在RHEL / CentOS主机上使用Xen虚拟化Windows的人都应该尝试使用http://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers