我想调整 Windows 7 TCP 堆栈以提高 LAN 环境中的速度。
背景信息:我已安装 Citrix XenServer,该服务器装有 Windows 2008R2、Windows 7 和 Debian Lenny(带 Citrix 内核),Windows 计算机已安装 Tools,iperf
服务器进程在不同的主机上运行,Debian Lenny 也是如此。服务器处于闲置状态,测试重复了几次以确认结果。
虽然使用iperf
2008R2 进行测试可以实现大约 600-700Mbps 的速度而无需进行任何调整,但我找不到任何指南或参数集可以使 Windows 7 实现超过 150Mbps 的速度,而无需使用参数改变 TCP 窗口-w
大小iperf
。
我尝试使用netsh
autotuining
、disabled
和experimental
-normal
没有highlyrestricted
变化。更改congestionprovider
不会产生任何效果,就像rss
和 一样chimney
。
将所有可用设置设置为与 Windows 2008R2 主机上的相同值没有帮助。
总结一下:
- Windows 2008R2默认设置:600-700Mbps
- Debian,默认设置:600Mbps
- Windows 7 默认设置:120Mbps
- Windows 7 默认
iperf -w 65536
:400-500Mbps
虽然我将性能缺失的 400Mbps 归咎于 XenServer 主机中糟糕的 Realtek NIC(我可以从我的笔记本电脑到 iperf 服务器的速率达到约 980Mbps),但这并不能解释为什么 Windows 7 如果不手动调整应用程序级别的窗口大小就无法获得良好的性能。
那么,该如何调整Windows 7呢?
答案1
答案2
Windows 2008R2 和 Windows 7 中的网络驱动程序可能不同。另外,xenserver 是否始终为 Windows 2008R2 和 Windows 7 提供相同的虚拟网卡?因为如果不同,则会加载不同的驱动程序。
可能会存在一些性能差异。
编辑:我刚想起来 Windows 7 默认的发送/接收缓冲区非常小。在我开发的某些应用中,我发现在 Windows 7 下它只有可怜的 8kB。在 ubuntu linux 下它大约是 120kB。你可能在某处读到限制是 64kB。这实际上不适用于更高版本的 Windows。我发现它甚至可以设置为高达 1MB 甚至更高。虽然当它这么大时性能提升不大。
此链接提供了注册表中一些适用于整个系统的 tcp 调整参数。请注意,其中许多选项可以被应用程序本身覆盖。
http://www.psc.edu/networking/projects/tcptune/ http://www.psc.edu/networking/projects/tcptune/OStune/winxp/winxp_stepbystep.html
尝试增加窗口大小和发送/接收缓冲区。希望链接中的那些注册表设置仍然适用于 Windows 7。
答案3
答案4
您不应该在 Citrix XenServer 上看到 Windows 中的 Realtek 驱动程序作为虚拟机。如果看到,则表示您未安装 XenTools。您看到的 Realtek NIC 是由 Dom 0(域 0)内的 QEMU 服务提供的模拟 NIC。安装 Windows 操作系统后,在执行任何其他操作(尤其是应用程序安装)之前,您需要安装 XenTools。此外,安装 XenTools 后,速度是硬编码的(如 VM 用户指南中所述),因为虚拟设备的速度没有限制。