为什么单个文件传输在千兆以太网上速度不会超过50MB / s?

我在我们的千兆networking上进行了一些testing。

当我从Windows 7计算机传输一个大文件(10GB)到另一个时,传输速度不会超过50Mb(从80MB /秒开始,然后减慢到32MB /秒)。

使用从多台计算机同时传输,客户端可以最大化其Gb连接。 同样,当同时使用多个客户端时,源计算机将达到Gb吞吐量。

testing是在非常快的驱动器上完成的(RAID 2中的速龙,RAID megaraid RAID5上的4 WD,SSD,Revodrive X3 …)。 所以他们不是瓶颈。

当我从一个Windows服务器传输时,吞吐量稍微好一点,但远远低于一个gibit LAN的预期的112MB / s。

任何想法 ?

奇怪的步行者之后编辑评论:我们在华硕主板和戴尔工作站上使用集成的网卡(intel)。 交换机是可pipe理的Cisco SG 300-20,SF 300-08和Netgear GS 108。

我猜你正在使用TCP / IP来传输文件,虽然你也忽略了提到你使用的是什么协议。

这个答案会填满一本大书 – 而且有很多可用的。 但其中可能的原因是:

  1. 拥塞控制 :您的networking堆栈会抑制吞吐量,在连接的整个生命周期内逐渐提高速率(直到遇到丢包,速率大幅下降)。 使用巨型数据包也有帮助。

  2. 窗口大小 :TCP / IP端点只会发送尽可能多的数据,因为它认为远程系统可以缓冲。 接收端必须至less能够cachingRTT的带宽。 虽然RTT在这里很低,但是带宽很大。 当IPV4被devise出来的时候,它并不期望必须应付这么大的缓冲区。 有一个解决scheme是启用窗口缩放。

  3. 你的电脑不是专门用来发送数据的 – 它是多任务的。 为了处理数据,NIC生成中断 – 这增加了延迟。 您可以通过在卡上启用缓冲(中断合并)来缓解对良好网卡的影响,

  4. 计算机在将数据上传到dataframe并将数据喷入networking中的工作方面仍然有相当大的工作量 – 这一点可以减轻 – 在这种情况下,如果您的操作系统/硬件支持,则使用TCP卸载 。

….在查看以太网和/或用于传输文件的协议的特性之前。

我终于设法获得超过100MB / s的文件传输。

我从外设pipe理器中删除了网卡,并重新安装了它。 我认为英特尔驱动程序参数混乱。 可能是因为尝试设置高MTU。