为什么我的1000 Mbit / s网络上只能获得300-400 Mbit / s?


17

我的设置是这样的:

笔记本电脑< - >路由器< - >桌面

它们都支持千兆以太网。我正在笔记本电脑和台式机上使用'iperf'TCP / IP基准测试,而且我从未获得超过400 Mbit / s的原始吞吐量。笔记本电脑是运行Windows XP的英特尔酷睿2双核2 GHz,桌面是运行Windows 7的英特尔酷睿2四核2.4 GHz。我可以看到哪些内容可以最大化它们之间的网络速度?软件设置?一种了解我的电缆是否达不到规格的方法?如何知道其中一台设备中的千兆以太网控制器是否无法达到最大速度?

Answers:


11

1 Gbit / s是此连接的理论最大值。

很多事情都会影响这一点。

预计机载NIC的性能会受到影响,因为它们很可能(基于设备描述“笔记本电脑”和“桌面”)基于主机的适配器依赖CPU来处理网络流量。因此,速度将受到CPU做其他事情的影响(例如,将数据从HDD传送到网络子系统)。

此外,根据“路由器”的不同,它可能在从LAN端口传递到LAN端口时尝试处理数据,因此其处理速度也可能影响数据传输速度,无论其“端口”的速度有多快是。

如果我是你,我的下一个测试就是给自己一个“足够长的”CAT6交叉补丁线并将笔记本电脑直接连接到PC(你可能可以使用直通电缆,因为许多NIC支持自动 - 这些天的交叉)。

这样你(至少)可以很容易地消除或识别路由器(和/或现有布线)作为瓶颈。


有关制作千兆交叉电缆的两种可能的引脚分布,请参见en.wikipedia.org/wiki/...
2010年

好的信息肯定。在这种情况下,如果用户不习惯制作电缆,并且目标是消除可能的减速,那么他可能最好使用工厂制造的电缆。没有什么比松散的卷曲更糟糕的了。;)
Ƭᴇcʜιᴇ0072010年

13
仅供参考,使用千兆以太网,不再需要交叉电缆。所有千兆以太网控制器都必须能够“自动检测”电缆,因此您可以使用标准电缆连接到千兆以太网设备。我会尝试将笔记本电脑直接连接到桌面,看看是否存在差异。
davr 2010年

@davr你能成功吗?
ebrahim.mr

8

默认情况下,iperf使用非常小的窗口大小。

增加窗口或在UDP模式下运行它将很容易使1 Gbit / s连接饱和。


没想到,我会试试。
davr 2010年

1
您不会使用消费级硬件使其饱和。CPU通常受到PCI或PCI-Express总线的限制。即CPU无法足够快地将数据从RAM移动到网卡。服务器级硬件似乎做得更好。我知道,我是一名程序员,我一直在努力做到这一点。接近但现在受我自己的硬件限制。
马特H 2010年

1
为我工作,正在敲打我的头一小时试图弄清楚为什么Windows iperf给我250mbit /秒而Ubuntu在同一台机器上启动时给我925mbit / sec。结果是Windows上的iperf默认为8k tcp窗口大小和linux上的88k窗口大小。
Omry

@Omry,Windows上的iperf从多个角度来看都是一只狗。我大部分都放弃了,只在linux下运行iperf
Mike Pennington 2013年

4

Jeff Atwood 对千兆网络的真实吞吐量在他的计算中更接近30MB / s 有一个很好的分析。(大'B',不小'b')

...你绝对不应该期望我们实现从10baseT到100baseT的完美缩放。如果没有任何重大调整,您只能获得您所期望的十倍带宽改进的一小部分


他正在使用的“pcattcp”工具是一块垃圾。我的900mhz linux上网本(可能和他的机器在2005年一样快)在环回上做了300MB / s。
user23307 2010年

是的,与pcattcp相比,iperf在环回方面的性能明显更好。我会坚持使用iperf进行测试,除非我听到其他更好的东西。
davr 2010年

此外,我已经获得了高于他的240比特,那篇文章已经有5年了,所以我认为它不再具有相关性,因为从那时起技术应该如何大大提升。
davr 2010年

好吧,考虑到环回接口是虚拟的(甚至没有任何东西转移到网卡)你会期望更好的性能(基本上它是处理过程而没有触摸硬盘)。我在环回接口上获得8.09 Gbits / s(1035Mbytes / s)。
马特H 2010年

3

如果一切都是千兆位,您可以尝试启用巨型帧。我的一个朋友用他的家用电脑做了这件事,发现吞吐量大幅增加。但是,如本文所述,VOIP等低延迟应用程序存在一些缺点。


对于大多数应用程 所有这一切都意味着每个数据包的TCP或UDP协议开销更少。此外,为了获得最佳效果,您的交换机/路由器还应支持巨型帧。我怀疑他会的。
马特H 2010年

对于任何结果,您的交换机必须支持巨型帧。只有L2的设备无法发送回“数据包太大”的ICMP错误,告诉您的计算机需要使用较小的数据包大小。
cpt_fink 2014年

1

你说你在使用路由器吗?是一个现成的消费级路由器(不是开关)?

我会说这很可能是你的瓶颈。要验证这一点,请将笔记本电脑直接插入桌面。将笔记本电脑和台式机设置为使用静态IP地址,如192.168.1.10(笔记本电脑),192.168.1.11(桌面)。

这应该允许笔记本电脑直接与桌面通话。在它们之间运行iperf并在此处报告结果。

这应该是有效的,因为大多数现代网卡都可以自动检测发送/接收线,这与以前您必须构建交叉线缆时不同。

如果你看到明显增加,那么你的路由器就是罪魁祸首。其中一些有背面的开关,其他可以实际在端口之间路由。许多这些路由器都是糟糕的表现者。如果你确实发现这是问题,那么如果我是你,我要么升级路由器(这可能适合互联网使用)或者自己购买GigE交换机并将其级联到路由器交换机上。将笔记本电脑和台式机插入交换机。这样,他们就会绕过路由器互相交谈。

完成实验后,请确保将笔记本电脑和桌面更改回DHCP。

为了给你一个想法,你应该得到我认为650Mbit / s及以上。除非你告诉它,否则iperf不会使用硬盘。所以它是内存或真正测试网络的内存。

其他瓶颈实际上是CPU可以将数据从内存传输到网卡的速度。PCI Express上的网络似乎运行得更好。我认为笔记本电脑现在通常都是相当便宜的,所以如果你没有看到太多,那么这可能是另一个瓶颈。

此外,消费级交换机通常只能处理任意两个端口之间的1GB切换,而高端管理型交换机可以同时在所有端口上以线速切换。这是他们花费更多成本的部分原因。


1

我们进行了大量的测试,然后归结为操作系统。

如果我们从Ubuntu 11.04转到Ubuntu 11.04(与CentOS for Linux机器相同),速度吞吐量为~938-941 MBits / s常数。如果我们从Windows 7 x64 SP1 Ultimate到Ubuntu 11.04,它的变化范围是~440-475 MBits / s。如果我们从Windows 2008 R2SP1 x64移动到Ubuntu 11.04,速度测量为~435-635 MBits / s。

如您所见,与Windows相比,基于Linux的计算机完全利用千兆链路。我们现在正在调查Windows中的设置,这些设置将导致与相同硬件上的Linux相同的吞吐量。硬盘限制不是因素,因为这是在内存中。根据记录,我们使用的机器配备了带SATA 3.0的7200 RPM驱动器。Ubuntu 11.04(或Linux基础版)和Windows都超过了这些SATA链接的理论速度。


感谢您的信息,如果您发现任何影响Windows速度的设置,请更新您的答案
davr 2011年

这让我想知道iperf是不是Windows中唯一默认比Linux更小的数据包大小的部分,请参阅superuser.com/a/95587/16966
matt wilkie 2014年

0

传输速度仅与链中最薄弱的环节一样好。它可能不是网络速度,而是硬盘的写/读速度。

您可以下载RamDisk软件并在两台计算机上创建RamDisk。在其中放置一个合适的大小文件,并通过RamDisks之间的网络进行传输。这应该显示您的网络的实际速度,不会受到硬盘驱动器速度的瓶颈。


1
这就是为什么我提到'iperf',但我想这不是一个常见的工具。基本上它直接测试网络速度,无需读/写硬盘驱动器,因此这不是瓶颈。我确实知道硬盘可能是现实世界使用的瓶颈。
davr 2010年

0

不是你问题的直接答案,但最近我们iperf在两个Linux机箱之间得到了以下结果(8核,每个2.66 GHz):

------------------------------------------------------------
Client connecting to 192.168.74.15, TCP port 5001
TCP window size:  192 KByte (default)
------------------------------------------------------------
[  3] local 192.168.74.25 port 54016 connected with 192.168.74.15 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

MTU = 1500(即不使用巨型帧)。这应该可以让您了解原则上可行的性能。

网卡(lspci输出)是:

82571EB Gigabit Ethernet Controller

在双方。

您可能想要检查服务器上的CPU负载,尤其是客户端上的CPU负载,看看它是否接近100%。即使我不得不说在我们的系统上,最繁忙的核心在接收器(发送器)侧空闲80%(83%),而其他7个似乎100%空闲(检查mpstat)。

这是在iperf没有-u选项的情况下运行,即这使用TCP。


我认为你应该在1 - 2岁的桌面硬件上获得> 500或600 mbits / s。
马特H 2010年

-4

davr,与光纤通道和使用复杂带宽分配方案的类似技术不同,以太网是一种“监听和尖叫”协议。以太网首先监听是否有人正在传输,如果是,则等待,否则发送。问题是,如果两个或多个希望传输的人同时收听,他们也会同时发送!这将导致冲突和重新传输。花式开关消除了很多,但不是全部。

使用以太网,你应该期望看到大约30-40%的带宽(看起来你得到这个...我可能错误的确切#,很大程度上取决于交换机质量等)在大量的冲突开始发生之前,结构技术是像80%的东西。以太网便宜,光纤通道不便宜。。。我不确定4G以太网能做些什么来解决这个问题。。。它可能具有类似于光纤通道和朋友的更像“结构”的网络拓扑。这是过于简单化,但基本上是正确的。


2
是的,我没有使用'哑'中心。我想现在大多数人都会使用智能交换机或路由器直接相互连接设备,消除冲突。此外,我的测试只涉及连接到单个路由器的两个设备,因此在我的特定情况下碰撞不会成为问题。
davr 2010年

davr - 当我扮演魔鬼的拥护者一会儿的借口。。。什么阻止你的两个主机同时尝试说话?此外,您没有提到正在传输的数据类型。。。它几乎只是TCP或有很多数据流(音频,视频等)?两台计算机是同时传输数据还是存在更精确划分的客户端/服务器关系?
TheEruditeTroglodyte 2010年

2
我正在使用一个特殊的TCP / IP基准测试程序,其中只有一台计算机发送,另一台监听。但即使这样,以太网也是全双工的......如果你只有两台机器,它们可以同时发送和接收全部带宽。
davr 2010年
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.