Kay*_* II 10 performance file-sharing smb gigabit-ethernet
我最近使用 Samba 服务器和 Windows Vista 客户端通过千兆以太网网络(我没有使用巨型帧)设置了 Windows 文件共享。我已经复制了一些文件,但我看到的最大吞吐量是 20MB/s(兆字节,不是兆比特),这大约是网络理论最大值 125MB/s 的 15%。服务器有一个RAID阵列,可以管理大约75MB/s(瓶颈是PCI总线),客户端在磁盘到磁盘复制中可以管理大约40MB/s。
我应该补充一点,当时网络上没有其他流量。
我知道我永远不会得到理论上的最大值,但我不认为它会这么糟糕。
Windows 文件共享 (SMB) 在千兆以太网网络上的典型性能是什么?
加分项:我可以调整什么(除了使用巨型帧)以使其更快?
网卡、交换机和布线的质量都会产生影响。可能值得搜索您正在使用的 NIC 和交换机的评论,以查看其他人是否报告它们性能不佳。我知道内置于主板的 NIC 比 Gbit 传输更糟糕,但根据我的经验,这似乎对我的环境没有太大影响,如果有的话。
作为参考,我刚刚在我们的办公室安装了一个新的 Gbit 交换机(替换了旧的 100Mbit 交换机),并且在我测试的每个机器组合之间,大型 SMB 传输的运行速度接近(但低于)30Mbyte/sec。我刚刚在两台机器之间用 netcat 做了一个快速测试,得到了相似的结果,所以我不认为 SMB 是瓶颈。我刚刚测试的两台机器之间确实有两个开关,这可能会产生影响,但我想这种影响很小,因为 SMB 传输到同一交换机上的机器的位置的数字有多接近。
我在 Gbit 网络上看到的最佳传输速率在其最快的情况下略低于 50Mbyte/sec。这是在将驱动器映像从一台机器传输到另一台机器上的文件时(为了转换为 VMWare 虚拟驱动器。在那种情况下,两台机器通过短交叉电缆而不是通过交换机连接。巧合的是有问题的其中一台机器是我刚刚测试过的机器之一,从中获得了大约 29Mbyte/sec - 在我的案例中,主要瓶颈的最可能罪魁祸首可能是建筑物中可能已经完成 8 年的布线便宜!在我的小型家庭网络上进行的快速(同样不科学)测试发现传输速率更像是 35Mbyte/sec 将文件从 Samba 共享复制到 Windows 机器,而在另一个方向上复制 25Mbyte/sec(我'
巨型帧将对批量传输产生影响,因此如果您的所有套件都正确支持它们,我建议您尝试一下。
长话短说:根据我的轶事经验,你的 20Mbyte/sec 有点慢,但不是很大。我所有的 Windows 和 Samba 安装都几乎完全没有调整过,所以我怀疑你的硬件/布线是我看到的和你看到的之间的区别。
编辑
当然,从这个答案开始的五年后,硬件和软件已经发生了变化。即使使用便宜的套件,我也经常在具有 Gbit 网络的机器上看到 90+ MiB/秒的传输。我的家庭媒体/备份/其他服务器似乎仅限于 60 多一点,用于批量传输,但这似乎是 samba 在盒子硬件的单个核心上受 CPU 限制。
啊...这是服务器人员了解引擎盖下的内容很重要的地方。由于这是两岁,我想他已经解决了。然而,对于后代或任何有类似问题的人来说,他可能遇到的是这个
(TCP 窗口大小 * 8 位 / RTT 以毫秒为单位)= 以 bps 为单位的最大 TCP 吞吐量
虽然您可能有一个千兆网络,但单个 TCP 流不太可能达到那么高。
这是一个简单的表格,假设您在 Vista 中拥有默认的 65535 字节 TCP 窗口大小
RTT 10 ms => TCP 吞吐量 = 52428000 bps = 52Mbps
RTT 20 ms => TCP 吞吐量 = 26214000 bps = 26Mbps
RTT 50 ms => TCP 吞吐量 = 10485600 bps = 10Mbps
RTT 100 ms => TCP 吞吐量 = 5242800 bps = 5.2Mbps
RTT 150 ms => TCP 吞吐量 = 3495200 bps = 4.3Mbps
RTT 200 ms => TCP 吞吐量 = 2621400 bps = 2.5Mbps
RTT 300 ms => TCP 吞吐量 = 1747600 bps = 1.7Mbps
RTT 500 ms => TCP 吞吐量 = 1048560 bps = 1Mbps
在 20Mbytes/sec 或 160Mbits/sec 时,您的往返延迟可能约为 3 毫秒。加快速度的唯一其他方法是使用 TCP 优化器,通过网络执行重复数据删除或将片段拼接成更大的数据包。通过 LAN 可能不会为您带来多少费用。如果您使用像 Linksys 或 Netgear 这样的 SoHo 设备,您的延迟可能是由于交换机上缺少共享缓冲区而引起的。如果它是一个更大的交换机,比如 24 端口,请尝试确保两个设备连接到同一个 ASIC。这将有助于序列化延迟,但作用不大。如果你能把它降到 2 毫秒,你会得到大约 31-32 兆字节/秒的提升。如果它们位于两个不同的交换机上,则没有新硬件您无能为力。