我对我们的千兆网络进行了一些测试。
当我将一个大文件(10GB)从一台 Windows 7 计算机传输到另一台计算机时,吞吐量从未超过 50Mb(它以 80MB/s 的速度开始一秒钟然后减慢到 32MB/s)。
使用来自多台计算机的同时传输,客户端可以最大化其 Gb 连接。同样,当同时使用多台客户端时,源计算机的吞吐量接近 Gb。
测试是在非常快的驱动器上进行的(Raid 0 中的 2 个 velociraptor、LSI megaraid RAID5 上的 4 个 WD red、SSD、Revodrive X3……)。因此它们不是瓶颈。
当我从 Windows 服务器传输时,吞吐量稍微好一些,但远远达不到千兆 LAN 预期的 112MB/s。
任何想法 ?
根据 strange walker 的评论进行编辑:我们在华硕主板和戴尔工作站上使用集成网卡 (英特尔)。交换机是可管理的 Cisco SG 300-20、SF 300-08 和 Netgear GS 108。
答案1
我猜您正在使用 TCP/IP 来传输文件,尽管您也忘了提及您正在使用什么协议。
这个问题的答案可以写成一本厚书——而且答案有很多。但可能的原因包括:
拥塞控制:您的网络堆栈会限制吞吐量,在连接的整个生命周期内逐渐增加速率(直到遇到数据包丢失,此时速率会大幅下降)。使用巨型数据包也有帮助。
窗口大小:TCP/IP 端点只会发送它认为远程系统可以缓冲的数据量。接收端必须能够至少缓冲带宽 x RTT。虽然这里的 RTT 很低,但带宽很大。当设计 IPV4 时,它并没有想到要处理如此大的缓冲区。有一个解决方案,即启用窗口缩放。
您的计算机并非专门用于发送数据 - 它会执行多项任务。为了处理数据,NIC 会生成中断 - 这会增加延迟。您可以通过在卡上启用缓冲(中断合并)来减轻这种情况对优质网卡的影响
计算机在将数据打包成帧并将它们发送到网络时还有大量的工作要做——这也可以减轻——在这种情况下,可以使用TCP 卸载如果您的操作系统/硬件支持它。
....这是在了解以太网的特性和/或用于传输文件的协议之前。
答案2
我最终成功实现了超过 100MB/s 的文件传输速度。
我从外围设备管理器中移除了 NIC 并重新安装。我认为英特尔驱动程序参数有点混乱。可能是因为尝试设置了较高的 MTU。