最大网络传输速度仅为 50MB/秒左右;Windows 上为 70-100MB/秒,Ubuntu 报告千兆速度,为什么?

最大网络传输速度仅为 50MB/秒左右;Windows 上为 70-100MB/秒,Ubuntu 报告千兆速度,为什么?

我有两台不同的电脑,一台是台式机,另一台是笔记本电脑。两台电脑都装有不同的网络控制器(一个是 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”

相关内容