我有两台台式计算机直接互相交谈。它们都具有支持千兆以太网的网络适配器。那是1 Gbps或1000 Mbps。我用一条全新的10米长的Cat6 UTP 直电缆连接了它们,我已经接近理论上的最大值。Windows任务管理器(“网络”选项卡)在一个方向上显示844-946 Mbps。但从另一个方向看,它仅显示约326-365 Mbps。
Local: 192.168.100.152
Remote: 192.168.100.151
本地计算机运行Windows 8.1 Pro,我将其远程连接到另一台运行Windows Vista Ultimate的计算机。
Iperf结果
我使用Iperf进行了一些测试。我每次都进行60秒的测试。我对每个交流方向都进行了10次测试。然后,我将此表与测试结果放在一起以获得平均值。
192.168.100.152 -> 192.168.100.151 106 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 104 MB/s
192.168.100.152 -> 192.168.100.151 101 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
----------------------------------------------------
Min: 101 MB/s Max: 108 MB/s Avg: 106.4 MB/s (851.2 Mbps)
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.0 MB/s
192.168.100.152 <- 192.168.100.151 41.0 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.0 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
-----------------------------------------------------
Min: 41.0 MB/s Max: 41.1 MB/s Avg: 41.07 MB/s (328.56 Mbps)
我的问题是,为什么在另一个方向上这么慢?
Windows任务管理器
这是在Iperf中执行测试时看到的网络图。
请注意以下两个屏幕截图中的图!
当我从发送数据切换到接收数据时,您是否注意到它在右上角从“ 1 Gbps”变为“ 500 Mbps”的情况?为什么这样做呢?是否以某种方式将另一个网络端口感知为1 Gbps的一半,而当以另一种方式感知却将其感知为完整?
文件传输测试
我对数据文件进行了更多测试,以获取更真实的磁盘间读数。为此,我创建了一个1 GB的文件。我仅使用默认的Windows文件共享功能。从本地计算机,我连接到远程计算机上的C $共享,并在它们之间来回拖放文件(跳绳),每次都更改文件名。我尽我所能安排一切,这就是我得到的。
192.168.100.152 -> 192.168.0.151 1073741824 Byte 25 s 40,96 MB/s
192.168.100.152 -> 192.168.0.151 1073741824 Byte 20 s 51.2 MB/s
192.168.100.152 -> 192.168.0.151 1073741824 Byte 16 s 64 MB/s
192.168.100.152 -> 192.168.0.151 1073741824 Byte 16 s 64 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 11 s 93.091 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 34 s 30.118 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 11 s 93.091 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 11 s 93.091 MB/s
Windows文件复制图指示的吞吐量说明了另一个问题。在这里,我正在下载两个文件,一个接一个地下载到同一磁盘上的两个不同位置。第一个副本显示107 MB / s的速度持续最高达到41%,第二个副本显示98.9 MB / s的速度持续达到87%。
因此,这与我使用Iperf工具获得的结果是一致的。现在,这是我上传到远程计算机时的外观。
它维持103 MB / s的速度,最高可达到73%,然后以82%的速度下降到27.3 MB / s,然后上升到93%的水平,达到49.1 MB / s。
这是两个看起来更有趣的“过山车”图。
更新1-链接速度
我尝试在远程计算机上禁用Wifi适配器。(Wifi适配器已在本地计算机上禁用。)我认为这是Timtech所说的意思。我有同样的想法-同时启用有线和无线适配器将有线适配器上的吞吐量限制为Wifi适配器的级别(适应最慢的适配器以实现兼容性)。因为Wifi适配器(在这种情况下为DWA-160 Wireless N)通常被Vista计算机检测为“ 52 Mbps”-“ 104 Mbps”链接。
在以下屏幕截图中,将远程计算机设置为服务器,将本地计算机设置为客户端(192.168.100.152 <-192.168.100.151)。
但是,断开远程计算机上的Wifi适配器的连接并没有帮助我降低有线连接的吞吐量。
不仅!在远程计算机上的Windows Task Manager中,有线适配器(LAN 1)的链接速度显示为“ 1 Gbps”。如果您参考上面的屏幕截图,您会看到在本地计算机上将其检测为“ 500 Gbps”链接。因此,对于同一有线连接,Windows Vista表示这是1 Gbps的链接,而Windows 8.1 Pro表示这是500 Gbps的链接……那么,哪一个正确?
当我将其设置为客户端并将本地计算机设置为服务器时,这是在远程计算机上的外观(192.168.100.152-> 192.168.100.151)。
正如您在此处看到的那样,约有95%的1 Gbps链路正在使用。转换为950 Mbps。这正是我在上面的测试中得到的。但是反之则完全不同。
更新2-双工和MDI-X
正如某些人所建议的那样,我了解了双工设置。本地和远程计算机都设置为自动协商模式,如下面的屏幕快照所示。
我尝试在两台计算机上都更改为“ 1.0 Gbps全双工”。然后,我使用Iperf进行了与以前相同类型的测试。使用本地计算机作为服务器,使用远程计算机作为客户端,最大速度约为950 Mbps。使用本地计算机作为客户端,使用远程计算机作为服务器,我的速度约为360 Mbps。
在这里,看看这些屏幕截图。
您在此处看到的是我在两台计算机之间上载和下载时的示意图。较高的图(利用率为95-98%)是本地到远程(上游192.168.100.152-> 192.168.100.151)。较低的图(利用率约为33%)位于本地(下游192.168.100.152 <-192.168.100.151)。
为了排除所有Auto MDI-X问题,我将其中一个交叉适配器连接到电缆的一端(本地计算机)。
那肯定会使电缆成为交叉电缆。地狱,我什至用网络测试仪测试了它!现在确实已经越过了(引脚1 / 3、2 / 6)!
因此,现在我在两台计算机之间拥有真正的交叉电缆连接,并且手动设置了“ 1.0 Gbps全双工”。但是我仍然有同样的问题。还有其他想法吗?除了升级Vista计算机(或重新安装8.1计算机)?
更新3-软件或硬件限制?
我最好的猜测是,我有两个互不兼容的操作系统。它们都是Windows系统,但并非所有Windows系统都相同。我将不得不尝试同时在两者上使用Vista或在两者上使用8.1 Pro,看看我获得了什么样的吞吐量。这意味着购买升级。该死的微软。
两台计算机都是通过定制方式构建的。这是一些规格。
Local
-----
Gigabyte GA-EP45-UD3R
Intel Core 2 Quad Q9650
Intel P45
Corsair XMS2 DHX TwinX DDR2 PC6400/800MHz 4 GB
Realtek 8111C chips (10/100/1000 Mbit)
WD Caviar Black WD1002FAEX
Windows 8.1 Pro 64-bit
Remote
------
Gigabyte GA-X38-DQ6
Intel Core 2 Duo E4500
Intel X38
Corsair XMS2 DHX TwinX DDR2 PC6400/800MHz 4 GB
Dual Realtek 8111B chip (10/100/1000 Mbit)
WD Caviar Black WD1002FAEX
Windows Vista Ultimate 64-bit
Tonny建议Vista机器可能使用的是Realtek坏芯片。所以我挖了这些规格。我现在看到Vista机器使用的B修订版为8111,而本地机器使用的是同一芯片的C修订版。这意味着什么吗?制造商明确将它们都指定为1000 Mbit(参见上文)。难道8111B的表现不如这么大(360 Mbps)?
这些特定的驱动器达到107 MB / s的突发速率。这正是我在本地计算机上的测试中看到的数字。但是,即使连续的顺序或随机读取/写入(可能为55 MB / s)也不能转换为360 Mbps。那应该给我大约440 Mbps,而不是我正在获得的360 Mbps。因此,我不认为这会成为瓶颈,尤其是因为它们都使用相同的驱动器模型。此外,文件复制操作是一回事,但是Iperf根本不使用磁盘,它仅使用RAM内存进行测试。
更新4-TCP校验和卸载
根据Tonny的建议,我尝试关闭TCP校验和卸载(对于IPv4和IPv6)。
我还将两台计算机的“速度和双工”都切换回自动。但这并没有帮助。我仍然在一个方向上吞吐量低,而在另一个方向上吞吐量高。
更新5-新的驱动程序版本
我尝试将本地和远程驱动程序版本更新为从技嘉网站和Realtek网站下载的最新版本。
Update path...
On local (RTL8111C):
8.1.510.2013 (2013-05-10, Microsoft)
8.20.815.2013 (2013-08-15, Realtek)
On remote (RTL8111B):
6.241.623.2010 (2010-06-23, Realtek)
6.250.908.2011 (2011-09-08, Realtek)
6.252.1109.2012 (2012-11-09, Realtek)
我仍然在一个方向上有同样糟糕的吞吐量。
更新6-CPU利用率
我检查了CPU利用率。这应该不是问题。这是我的发现。
On local...
Download: 4 - 10 %
Upload: 4 - 10 %
Idle: 0 - 4 %
On remote...
Download: 24 - 38 %
Upload: 10 - 25 %
Idle: 1 - 6 %
本地(下载,上传,空闲)...
远程(下载,上传,空闲)...
遥控器使用的CPU功率要多得多,但是Core 2 Duo的速度也较慢。但是在我的测试中,它从未超过38%。这里特别有趣的是,与上载时(本地<-远程)相比,它在下载时(本地->远程)使用的CPU能力要大得多。
因此,在950 Mbps的吞吐量下,它使用了38%,在360 Mbps的吞吐量下,使用了25%。同样,内核利用率不平衡,一个内核比另一个内核使用更多。我不确定从中得出什么结论。本地计算机不显示核心利用率,因此我无法进行比较。但是CPU利用率甚至在本地计算机上(下载/上传时为10%)。
更新7-新的英特尔千兆网络适配器
我现在已经安装了英特尔提供的全新PCI-Express千兆网络适配器,以替代远程计算机上内置的Realtek RTL8111B,据说上传速度太慢。英特尔适配器的产品编号为EXPI9301CT。根据我读过的评论,该适配器应该非常好。我只想排除可能的瓶颈。
我现在使用Windows Iperf做了一些测试,结果如下。
本地(下载,上传)...
远程(下载,上传)...
平均而言,此适配器实际上比Realtek适配器慢一点。我认为与Realtek相比,其开销较小,因此连续吞吐量更稳定。但是即使使用此英特尔适配器,我仍然只能在一个方向上获得约360 Mbps,在另一个方向上获得950 Mbps。
local: 192.168.100.152 (win 8, realtek 8111c)
remote: 192.168.100.154 (vista, intel desktop ct)
192.168.100.152 -> 192.168.100.154 113 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
192.168.100.152 -> 192.168.100.154 103 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
192.168.100.152 -> 192.168.100.154 102 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
192.168.100.152 -> 192.168.100.154 101 MB/s
192.168.100.152 -> 192.168.100.154 102 MB/s
192.168.100.152 -> 192.168.100.154 101 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
----------------------------------------------
Max: 113 MB/s Min: 101 MB/s Avg: 103.8 MB/s
192.168.100.152 <- 192.168.100.154 42.2 MB/s
192.168.100.152 <- 192.168.100.154 41.2 MB/s
192.168.100.152 <- 192.168.100.154 41.1 MB/s
192.168.100.152 <- 192.168.100.154 43.0 MB/s
192.168.100.152 <- 192.168.100.154 42.3 MB/s
192.168.100.152 <- 192.168.100.154 42.3 MB/s
192.168.100.152 <- 192.168.100.154 40.2 MB/s
192.168.100.152 <- 192.168.100.154 40.9 MB/s
192.168.100.152 <- 192.168.100.154 41.3 MB/s
192.168.100.152 <- 192.168.100.154 42.0 MB/s
-----------------------------------------------
Max: 43.0 MB/s Min: 40.2 MB/s Avg: 41.65 MB/s
我不知道为什么它在本地到远程的第一次测试中都达到113 MB / s的峰值。它在整个测试过程中保持了这一速度,该图几乎保持不变,为113 MB / s。和以前一样,我每次运行间隔60秒。但是,在下一次运行时,它降至104 MB / s。
如您所知,这些Intel适配器的吞吐量与内置Realtek适配器的吞吐量相同。因此,我可以肯定地说,它与适配器本身无关。因此,我们不能再将RTL8111B指责为比其他主板上的RTL8111C劣等/劣等的芯片。这看起来越来越像软件/操作系统/配置问题,或同时出现三件事。
更新8-Ubuntu LINUX带来的出色结果
在用尽所有其他选项之后,我最终决定使用Linux运行一些测试,并且得到了不错的结果。我在本地和远程计算机上都使用了Ubuntu Linux 13.10 Live系统和Iperf for Linux(版本2.0.5-3)。这是结果。
=======================================================
REALTEK 8111C <-> REALTEK 8111B | IPERF ON UBUNTU LINUX
=======================================================
local: 192.168.100.152
remote: 192.168.100.151
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
----------------------------------------------
Max: 112 MB/s Min: 112 MB/s Avg: 112 MB/s
192.168.100.152 <- 192.168.100.151 110 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 110 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
----------------------------------------------
Max: 111 MB/s Min: 110 MB/s Avg: 110.8 MB/s
本地(下载,上传,空闲)...
如您所见,使用Ubuntu时,在两个方向上的吞吐量相同。是因为我在两台计算机上都使用相同的OS,还是其他原因?如果两台计算机上都设置了相同的Windows版本,我将获得相同的吞吐量吗?我不明白如果我在一台计算机上使用过时的Windows版本(即Vista)而另一台计算机上使用最新版本,为什么会很重要?...我的意思是Vista仍然是当前受支持的操作系统,并由Microsoft支持。Windows XP是另一回事。
但是我知道他们正在尽一切可能杀死Vista。例如,有意在Windows Vista上不支持最新的Office 2013。我确信微软希望Vista永远不会发生。就像他们希望Windows 8.0从未发生过一样。但是我通常和他们一样坚持不懈,除非绝对必要,否则我不会升级Windows安装。
因此,问题是如何使用两个不同的Windows版本在两个方向上获得相同的吞吐量。Windows Vista应该具有千兆速度-它不是使用20年的操作系统,而是我们要谈论的Windows 95。Vista是现代操作系统。我尚未测试过在两台计算机上运行相同的Windows版本。TCP的实现可能有所不同,或者这两个OS版本之间可能有所不同。如果是这样,那么我可能会被迫升级Vista机器。要么切换到Linux。我不准备为少花钱多付钱。为什么我必须升级Windows才能双向获得千兆吞吐量?...
更新9 ...
电缆
我试图换向电缆。我得到的结果和以前一样。我还获得了一条新的Cat 6跳线,并尝试了一根。吞吐量测试结果相同。因此电缆不是这里的问题。我只使用了预端接/模压跳线。因此接线应正确。但是我计划稍后再终止自己的安装电缆。
固件和影音
至于防火墙(FW)和防病毒(AV),我不使用任何第三方FW或AV软件。我只有Windows防火墙和Security Essentials。我在两台机器上都禁用了它们。吞吐量测试结果与以前相同。
局域网速度测试
我已经在本地计算机上安装了LAN Speed Test Lite 1.3。我相信测试是在本地内存和远程计算机上的磁盘驱动器之间执行的。我不确定。但它要求在远程计算机上共享路径。我在远程使用o $ share。
Upload: 427 Mbps
Download: 420 Mbps
我不太相信这些结果。如果查看该图,您会发现它在整个测试过程中变化很大。该测试是“成功”测试,即:先编写(上传)测试,然后再阅读(下载)测试。显然,如果您同时进行上传/下载测试,则总体吞吐量会降低。但是我对这样的测试不感兴趣。到目前为止,我只在Windows(文件共享/ smb)和Iperf中对文件传输测试中进行了“成功”测试。
我尚未使用LAN Speed Test进行任何内存到内存的测试,因为它需要使用远程上称为LST Server的程序,并且该程序需要注册才能使用。
更新10 ...
磁盘驱动器测试
我使用了Crystal Disk Mark 3.0.3来测试磁盘驱动器。这是结果。
Local disk: 118 MB/s read, 113 MB/s write
Remote disk: 70 MB/s read, 69 MB/s write
这些是基于5次运行和1000 MB负载的顺序读取和写入速度。
这是本地磁盘(磁盘标记,读取,写入)...
这是远程磁盘...
但是我不明白这一点……这些结果似乎矛盾。
好的,本地磁盘的读取速度为118 MB / s,因此报告的上载速度约为100 MB / s。但是,如果远程磁盘只能以69 MB / s的速度写入,则它将无法接收它。但是,通过一些魔术手段,我平均仍然获得不到100 MB / s的上传速度。
走另一条路更有意义。如果远程磁盘可以70 MB / s的速度读取,而本地磁盘可以113 MB / s的速度写入,则下载速度不应超过70 MB / s。我平均获得约40 MB / s的下载速度。这似乎是合理的。
因此,我无法从这些结果中得出任何结论。我的意思是很少使用本地计算机上的磁盘驱动器。它也是保存操作系统的磁盘,并且是该系统上的唯一分区。当远程磁盘几乎已满时,它也被划分为几个分区。但是,它不用于OS。我O:
在这里选择驱动器号进行测试,因为这是具有最多可用空间的分区。
(请注意,C:
在之前的测试中,我使用的驱动器号位于完全独立的Seagate磁盘驱动器上,该驱动器将OS保留在远程计算机上。因此,这些读数不具有可比性。)
写缓存
启用磁盘写缓存后,我得到了这些结果。
Local to remote: 106 MB/s
Remote to local: 42.2 MB/s
然后,我禁用了远程驱动器和本地驱动器上所有驱动器上的写缓存。
我没有重新启动,因为没有要求重新启动以使更改生效。然后,我得到了以下结果。
Local to remote: 106 MB/s
Remote to local: 42.1 MB/s
几乎没有任何变化。没有重新启动,也没有请求重新启动。
QOS数据包
然后,我继续在远程计算机上然后在本地计算机上为相应的适配器禁用QOS Packet Scheduler。
Local to remote: 107 MB/s
Remote to local: 41.9 MB/s
这里没有重大变化。同样,没有重新引导,也没有请求重新引导。
巨型包
然后,我继续启用使用4 GB设置的巨型数据包,因为4 KB是两台计算机上支持的最大MTU大小。
Local to remote: 105 MB/s
Remote to local: 33.3 MB/s
现在,这里(本地到远程)的上载没有受到影响,但是下载吞吐量却大大降低了。不需要重新启动,但我决定还是重新启动两台计算机,这只是出于很好的考虑。然后,我再次执行了相同的测试,并获得了这些结果。
Local to remote: 117 MB/s
Remote to local: 33.2 MB/s
因此,现在的上传速度甚至更快,但下载速度仍然比我进行这些更改之前(即使在重新启动之后)还要慢。我原本希望他们俩都会有所提高。这是什么意思?