1Gbit LAN 上的 scp 性能

Bra*_*ram 10 networking scp ethernet

在我的有线 LAN 上,使用 1GBit/s 的设备,我有两台 Linux 机器(一台 Haswell,一台 Skylake Xeon),当我对大文件进行安全复制时,我看到 38MB/s。

看到这比1000Mbit/s规范低了3倍,不知道这个性能是否符合预期?

两台机器都使用 SSD 进行存储,都运行 64 位 Ubuntu。

在传输过程中,两台机器在 30% 的负载下大约有一个内核。

位于机器之间的路由器是 TP-Link Archer C7 AC1750。两台机器都有处于全双工模式的英特尔(R) 千兆以太网网络设备。

1Gbit LAN 上的正常 scp 传输速度是多少?

更新

  • 使用/dev/zero排除磁盘 IO 产生了相同的结果。
  • 使用 nc 的结果略高:41MiB/s。
  • 矛盾的是,UDP nc 比 TCP nc 慢,为 38MiB/s?
  • 切换到交叉电缆:scp 为 112MB/s。

结论

中间的TP-Link路由器是网络中的薄弱环节,跟不上。

Phi*_*ing 6

从理论上来看,它确实看起来很慢,尽管我在家用硬件上实际上没有看到任何传输速度更快。

您可能想尝试一些实验来排除可能的限制因素:

  • /dev/zero通过从 复制到 来评估您的原始 SSH 速度/dev/null。这排除了高清瓶颈。
    ssh remote_host cat /dev/zero | pv > /dev/null
    
    Run Code Online (Sandbox Code Playgroud)
  • 检查其他未加密的协议,例如 HTTP。HTTP 实际上只发送一个标头来发送文件。通过 HTTP 发送大文件是 TCP 速度的合理衡量标准。
  • 检查您是否没有强制流量通过路由器,而只是通过以太网交换机。例如,如果您的计算机有公共 IP 和本地 IP,则 scp 到/来自本地 IP。这是因为家庭路由器通常必须通过其 CPU 处理 WAN 流量,这会造成瓶颈。即使两台机器都在 LAN 上,使用公共 IP 也可以强制数据包通过 CPU,就像数据包要发送到 WAN 一样。
  • 同样,我会使用 IPv4。 一些家庭路由器对 IPv6 有一种奇怪的行为,它们要求将所有本地流量转发到路由器。
  • 如果可能的话,尝试使用千兆交叉电缆而不是路由器。这应该排除路由器。

  • 我认为 netcat (`nc`) 是测试“原始”文件传输速度的最佳解决方案,因为它使用起来非常简单,并且直接通过 TCP 传输,没有任何包装:监听端的 `nc -l 5678 > file_name` 和 `nc发件人的 receive_ip 5678 < file_name`。 (3认同)
  • 还可以与 iperf 结果进行比较。 (2认同)