为什么在千兆位以太网上,速度提高了950 Mbps,而速度却降低了360 Mbps?


46

我有两台台式计算机直接互相交谈。它们都具有支持千兆以太网的网络适配器。那是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中执行测试时看到的网络图。

一种 b

请注意以下两个屏幕截图中的图!

C d

当我从发送数据切换到接收数据时,您是否注意到它在右上角从“ 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%。

Ë F

因此,这与我使用Iperf工具获得的结果是一致的。现在,这是我上传到远程计算机时的外观。

G H 一世

它维持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。

在这里,看看这些屏幕截图。

p q

您在此处看到的是我在两台计算机之间上载和下载时的示意图。较高的图(利用率为95-98%)是本地到远程(上游192.168.100.152-> 192.168.100.151)。较低的图(利用率约为33%)位于本地(下游192.168.100.152 <-192.168.100.151)。

为了排除所有Auto MDI-X问题,我将其中一个交叉适配器连接到电缆的一端(本地计算机)。

[R

那肯定会使电缆成为交叉电缆。地狱,我什至用网络测试仪测试了它!现在确实已经越过了(引脚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)。

s Ť

我还将两台计算机的“速度和双工”都切换回自动。但这并没有帮助。我仍然在一个方向上吞吐量低,而在另一个方向上吞吐量高。

更新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)

ü v w X

我仍然在一个方向上有同样糟糕的吞吐量。

更新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 %

本地(下载,上传,空闲)...

ÿ ž a

远程(下载,上传,空闲)...

b 交流电 广告

遥控器使用的CPU功率要多得多,但是Core 2 Duo的速度也较慢。但是在我的测试中,它从未超过38%。这里特别有趣的是,与上载时(本地<-远程)相比,它在下载时(本地->远程)使用的CPU能力要大得多。

因此,在950 Mbps的吞吐量下,它使用了38%,在360 Mbps的吞吐量下,使用了25%。同样,内核利用率不平衡,一个内核比另一个内核使用更多。我不确定从中得出什么结论。本地计算机不显示核心利用率,因此我无法进行比较。但是CPU利用率甚至在本地计算机上(下载/上传时为10%)。

更新7-新的英特尔千兆网络适配器

我现在已经安装了英特尔提供的全新PCI-Express千兆网络适配器,以替代远程计算机上内置的Realtek RTL8111B,据说上传速度太慢。英特尔适配器的产品编号为EXPI9301CT。根据我读过的评论,该适配器应该非常好。我只想排除可能的瓶颈。

e

我现在使用Windows Iperf做了一些测试,结果如下。

本地(下载,上传)...

f g

远程(下载,上传)...

啊 i

平均而言,此适配器实际上比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

本地(下载,上传,空闲)...

j ak 人 上午 一个

如您所见,使用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。我在两台机器上都禁用了它们。吞吐量测试结果与以前相同。

o ap

水 AR 如

局域网速度测试

我已经在本地计算机上安装了LAN Speed Test Lite 1.3。我相信测试是在本地内存和远程计算机上的磁盘驱动器之间执行的。我不确定。但它要求在远程计算机上共享路径。我在远程使用o $ share。

在 au 影音

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负载的顺序读取和写入速度。

这是本地磁盘(磁盘标记,读取,写入)...

w 斧头 y

这是远程磁盘...

z

但是我不明白这一点……这些结果似乎矛盾。

好的,本地磁盘的读取速度为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

然后,我禁用了远程驱动器和本地驱动器上所有驱动器上的写缓存。

BA bb

我没有重新启动,因为没有要求重新启动以使更改生效。然后,我得到了以下结果。

Local to remote: 106 MB/s
Remote to local: 42.1 MB/s

几乎没有任何变化。没有重新启动,也没有请求重新启动。

QOS数据包

然后,我继续在远程计算机上然后在本地计算机上为相应的适配器禁用QOS Packet Scheduler。

公元前 d

Local to remote: 107 MB/s
Remote to local: 41.9 MB/s

这里没有重大变化。同样,没有重新引导,也没有请求重新引导。

巨型包

然后,我继续启用使用4 GB设置的巨型数据包,因为4 KB是两台计算机上支持的最大MTU大小。

是 bf

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

因此,现在的上传速度甚至更快,但下载速度仍然比我进行这些更改之前(即使在重新启动之后)还要慢。我原本希望他们俩都会有所提高。这是什么意思?


4
我认为任务管理器中显示的吞吐量数字会根据您的实际吞吐量自动缩放。当然,对于Windows 8和我的,这种方式目前显示为54 Mbps,在最近几分钟内,它已达到100MB和100kbs(空闲时),并且介于两者之间。
sgmoore 2013年

12
您是否考虑过从Linux实时CD(两个相同的启动盘)引导两台计算机以排除软件问题,以及将文件从RAM磁盘转移到RAM磁盘以排除HDD问题?
Moshe Katz

1
我想在这里投入2美分……我的第一个:您是否禁用了所有病毒扫描程序?我的第二句话:您是否尝试过反转电缆以查看问题是否也得到了解决(将电缆的末端切换到另一台计算机,反之亦然)。如果下载速度快而上传速度慢,则问题出在接线上。(即,您的双绞线不是绞在一起而是与其他双绞线在一起)
Rik

1
@MosheKatz我就是这样做的。从我刚刚发布的结果(请参阅更新8)可以看到,使用Ubuntu在两个方向上都获得了出色的吞吐量。
萨米尔

2
@Sammy哇,这个话题越来越大了:)我看到您在两端都尝试过Linux。但是您是否已经尝试过Linux <-> Win8和/或Linux <-> Win.vista?如果其中一个在两个方向上都具有全速,则您会知道另一个在故障(这将在另一个测试中显示),并且您/我们可以将精力集中在该机器上。
瑞克(Rik)2013年

Answers:


6

根据您的回复:

@ewhac本地计算机上的TCP窗口大小通常与远程计算机上的窗口大小不同。在本地(win 8)上的默认值为0.06 MB,在远程(vista)上的默认值为0.01 MB。它们必须具有相同的值吗?我如何要求它猜测MSS?是-m开关(“打印最大段大小”)吗?我通常不设置任何设置。我为什么要这么做?–萨米11月30日21:39

TCP窗口大小表示TCP堆栈将在停止并等待接收来自远程计算机的确认之前,从有线百叶窗向下喷出的最大数据量,换句话说,就是最大未确认流量。Vista机器上的TCP窗口比Windows Se7en机器上的TCP窗口小得多的事实支持以下理论:在停止和等待ACK之前,您没有充分填充管道。

因此,我要尝试的第一件事是使用-w参数增加Vista计算机上的TCP窗口大小。0.01MB有点无益;我猜是16KiB。因此,从16KiB开始并运行测试:

iperf -c -w 16K ...

将窗口大小加倍并重复测试:

iperf -c -w 32K ...

希望您应该观察到速度增加。继续将窗口大小加倍,直到不再看到速度显着提高。


4

如前所述,您将需要在iperf中修改TCP窗口大小,以通过低延迟的高速链接获得更高的吞吐量。不同版本的Windows(或iPerf)可能具有不同的默认窗口大小。尝试“-w 256K”开始与两个客户端和服务器。

您可以确认图表的箭头方向吗?在iPerf中,数据客户端推送到服务器(与我通常认为的相反)。

您可以排除硬盘驱动器的原因,因为iPerf不会接触硬盘驱动器。

我认为您已经验证您正在运行最新的NIC驱动程序。无需手动设置速度/双工模式。与巨型框架相同-它们不值得拥有现代硬件的麻烦。

验证是否在两个NIC上都启用了大发送卸载(LSO)和大接收卸载(LRO)。某些NIC驱动程序使用不同的名称(或控制此行为的多个选项),因此您可能不得不四处寻找。通常,默认设置是全部启用它们。


3

我认为您需要阅读有关iperf工作原理的更多信息。如果未设置正确的tcp窗口大小,则结果会相差很大。我相信它的-w开关。该网站将协助计算最佳TCP窗口大小。您需要知道RTT和带宽来进行计算。http://www.kehlet.cx/docs/tcpwin.php

也可以尝试使用其他工具,例如“ LAN Speed test”精简版,它们只会在两端共享之间进行上下传输。在使用它进行的测试中,其结果非常接近。另外,请确保您检查硬盘驱动器的最大读/写速度是多少。


我可以使用ping命令找出RTT吗?如果我对遥控器执行ping操作,则不到1毫秒。但这并没有告诉我多少。我是否可以使用其他一些工具,其中一种工具的精度更高?我知道我不能在公式中使用0毫秒。
萨米尔

我使用了一个名为hrping的ping程序。至于LAN Speed Test Lite,它不如Iperf好。一旦在另一端安装了LST服务器,它可能会变得更好。但是我不想注册使用它或支付许可证费用。
萨米尔

3

有两点可能会帮助您。Windows 7之后的版本中,TCP IP堆栈的实现方式有所不同。我会仔细查看我的TCP优化,您的两个盒子之间可能没有太多区别,但仍然值得在Vista盒子上进行一些调整。

已弃用netsh int tcp set global congestionprovider = ctcp的用法。为了设置或更改congestionprovider,必须使用以下命令:

在此处阅读文章:http : //forums.speedguide.net/showthread.php?280646-When-will-TCP-Optimizer-support-Windows-8-amp-Windows-Server-2012

netsh int tcp设置补充自定义300 10禁用ctcp 50 然后键入: netsh int tcp设置补充自定义

有关上述命令的更多详细信息,只需键入: netsh int setSupplemental

要检查您当前使用的哪个拥塞提供商,请使用以下命令: netsh int tcp showSupplemental

但是只有Win Server 2012才能创建自定义模板CTCP可能是一个问题。

Auto-Scaling也可能是一个因素。

也许值得一看,您的驱动程序可能需要升级/降级。看看哪个效果最好。

另一个想法是将数据包大小写入HDD。您的HDD扇区格式化为512b〜64K大小是多少,这可能会导致缓存瓶颈。

您是否考虑过启用巨型数据包(如果这适用于您的NIC)


是否可以禁用窗口大小缩放并将RWIN值手动设置为64K?
萨米尔2013年

我刚刚读到RWIN值在现代Windows系统上是动态更改的。这是真的?RWIN不能为固定值吗?
萨米尔2013年

2

Ubuntu LINUX带来的出色结果

这听起来很熟悉…… iperf在Windows中您会表现出莫名的糟糕性能,但是相同的硬件在Linux上可以正常工作。

经过反复的这场斗争,我得出的结论是iperfWindows中存在片状。我不知道为什么...说实话,我已经不再关心了,因为我知道我总能从linux取得理智的结果。

因此,如果您想知道为什么会得到如此差的性能,那就比应用程序看起来更远。


2

可以尝试停止MMCSS服务。是的,您会暂时丢失音频,但是可能是某件事正在激活它,导致网络活动受到限制,因此网络活动不会淹没其他活动。

有关MMCSS和网络限制的信息,请参见此处: http //blogs.technet.com/b/markrussinovich/archive/2007/08/27/1833290.aspx

可以按照以下说明进行调整: http //support.microsoft.com/kb/948066

我怀疑是这种情况的原因,因为吞吐量可能会降低,但是在Vista上遇到我自己的吞吐量问题,将头撞墙了很长时间之后,我发现了原因。我将NetworkThrottlingIndex设置为70,最终获得了预期的吞吐量。


2

您尚未尝试过的一件事是删除远程差分压缩在Vista上。

我的想法是由Vista上广泛使用CPU引起的。Vista网络驱动程序可能不知道如何将其卸载到网卡上,而Windows 8则更有效。

有关完整的详细信息,请参见文章:
通过禁用远程差分压缩来防止在Vista中通过网络进行缓慢的文件复制

简而言之,只需取消选中Remote Differential Compression控制面板->程序和功能->打开和关闭Windows功能,然后重新启动。

图片


0

以前,我追捕完全相同问题的尾巴已有一段时间!一个方向的传输速度较慢,在我的情况下为出站(上行链路)。

Windows 7 Pro,带有Realtek千兆8111C内置lan卡的Celeron J1800。另一端是QNAP 453a和MacBook Pro。

通过Iperf3进行测量时,将Windows 7设置为客户端时,我的速度为112 mbps(CPU使用率为25-30%)。设置为服务器时只有39-41 Mbps,CPU占用率高达50-100%。如此糟糕,以至于在进行带宽测试时PC会冻结。

无论我是要上传文件还是要下载文件到NAS或MAC,常规文件传输的最大速度都不能超过45mbps。

我得到的速度不超过每秒35-45兆字节。相当令人沮丧!

最终成为一个糟糕的lan卡驱动程序。我一直沉迷于更新驱动程序,并且总是在有新驱动程序可用时更新我的​​驱动程序。猜猜是什么,经过几次更新,我的局域网卡速度变慢了。

有人可能会说,只需删除旧驱动程序并安装新驱动程序即可。简单啊?我试了又试,这对我没有用。

这是我的解决方案:

使用制造商网站上的OEM驱动程序从头开始安装Windows。同样,我执行了以下操作:

在“设备管理器” /“ Lan卡” /“高级设置”下/“禁用除流量控制之外的所有内容”。

在“ Windows功能”下,禁用“远程差分压缩”。

现在平均速度在80-100 Mbps之间。

对不起,质量差的照片。

在此处输入图片说明


-2

来自YouTube上Linus Tech Tips的Linus遇到了同样的问题,我很抱歉,但是我忘记了解决方案是什么。这是最近播放的视频(截至2016年4月20日),我可能错了,但我认为最终结果是处理器上的单个线程是限制因素,因此如果您使用的是较旧的硬件并且如果尝试将速率提高到1 Gbps,实际上这是CPU的问题,如果它将大部分工作分担给CPU,这是当今大多数板载NIC所做的。我可能会误会,这是他的最近录像,我强烈建议您检查他的信息流。值得的是,我在千兆位互联网连接上遇到了同样的问题。


“我忘记了解决方案是什么”-那么答案不多了吗?
DavidPostill

1
因此,花点时间确定解决方案是什么。该答案无济于事,即使将其标记为社区Wiki,也仍然会由于提交错误答案而被禁止使用
Ramhound16年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.