![最大网络传输速度仅为 50MB/秒左右;Windows 上为 70-100MB/秒,Ubuntu 报告千兆速度,为什么?](https://linux22.com/image/840145/%E6%9C%80%E5%A4%A7%E7%BD%91%E7%BB%9C%E4%BC%A0%E8%BE%93%E9%80%9F%E5%BA%A6%E4%BB%85%E4%B8%BA%2050MB%2F%E7%A7%92%E5%B7%A6%E5%8F%B3%EF%BC%9BWindows%20%E4%B8%8A%E4%B8%BA%2070-100MB%2F%E7%A7%92%EF%BC%8CUbuntu%20%E6%8A%A5%E5%91%8A%E5%8D%83%E5%85%86%E9%80%9F%E5%BA%A6%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我有两台不同的电脑,一台是台式机,另一台是笔记本电脑。两台电脑都装有不同的网络控制器(一个是 Qualcomm Atheros,另一个是 Realtek)。两台电脑都使用随附的驱动程序。
目前两台计算机都安装了 Xubuntu 13.04 x64,但结果在 13.10(每日使用内核 3.10 和 3.11)和 12.04.2 以及 Lubuntu 13.04 上均可重现。如果我使用编译的 Realtek 驱动程序(我认为是 8168),桌面上的结果也相同。
如果我尝试从备份计算机恢复文件,两台机器的传输速度最多为 50MB/秒。网络信息显示为 1000 Mb/秒。
同一台运行 Windows 的计算机在恢复备份时可以轻松获得 70-90MB/s 的传输速度。
需要说明的是,我使用 Xubuntu 的文件管理器 Thunar 将一些文件夹从另一台计算机上的 Samba 共享拖到我的台式机和笔记本电脑上(不是同时拖)。
知道发生什么事了吗?
答案1
怎么了?可能是桑巴舞吧。
在尝试其他方法之前,请先在iperf -s
两个网络上测试网络驱动程序iperf -c other_ip
。应该会显示原始性能。您可以看到最高可达 ~125MB/s,但最低可达 ~100MB/s 也还行。
假设没问题,请尝试另一个协议。我向另一个用户推荐了 NFS因为根据我的经验,它比 Samba 快得多。我在那里的帖子包括示例配置,可帮助您启动并运行一个相当不安全的共享方案。如果您需要用户名和密码,这一切都可以完成,只是需要多做一些工作。
如果您想混合使用 Ubuntu 和 Windows,我建议您在需要从一个操作系统复制到另一个操作系统时保留 Samba,但这会很慢。
互联网上有很多 Samba 调优指南,但我从未在提高 Samba 到 Samba 的传输速度方面取得过多的成功。以下是我迄今为止看到的两个最大的主张:
使用严格分配写入速度加倍。
更大的缓冲区一般情况下只是有帮助:
read size = 65536 read prediction = true socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 write raw = yes read raw = no
这两种“解决方案”随处可见,但正如我所说,我对其中任何一种都没有多大运气,而且考虑到这里的一切都是某种 Linux,为了速度我只能依靠 NFS。
答案2
我遇到了同样的问题(2,5-3,0 MBps),并通过在配置中添加此行解决了该问题:
[global]
...
server signing = disabled
答案3
首先按照 Oli 的建议检查计算机之间的速度。我发现在尝试优化 Samba 之前,我必须从 2.4GHz 切换到 5GHz。
在装有 Samba 的 Ubuntu 上运行:
iperf -s
在客户端/Ubuntu/Mac 上运行:
iperf -c IP_on_Ubuntu_With_Samba
我在 2.4GHz 上获得了 40.2 Mbits/sec,在切换到 5GHz 后获得了 367 Mbits/sec。我首次在同一台服务器上运行这两个软件,获得了 72.5 Gbits/sec,所以我知道测试出了问题。
在 Mac 上安装:“brew install iperf”