为什么 ssh 的执行速度比 iperf3 慢?

为什么 ssh 的执行速度比 iperf3 慢?

我对 openssh 客户端/服务器的最大执行速度约为 1.03 GB/s 感到沮丧,而 iperf3 可以通过相同的点对点链接轻松维持 7.03 GB/s。

这些都没有任何效果;

  • 在 iperf 测试和 ssh 传输测试期间,两个机器上的 cpu 负载均低于 70%(总计 2400%),
  • 不涉及块设备

我只是不明白,ssh 根本无法支持 10gbe 吗?密码或散列是否会减慢我的速度?有人在 openssl 客户端源代码中硬编码了千兆位限制吗?我是否必须打开 8 个以上独立的 ssh 连接才能以线速通过此管道传输数据?


如下所示,微小的绿色光点是cat /dev/zero | ssh target 'cat >/dev/null';紫色/橙色斑点是基于 ssh 端口转发的 iperf3,高的斑点是常规 iperf3 在此输入图像描述

一些统计数据;

  • 专用链路上的 iperf3:7.11Gbits/s

    (我怀疑我对光纤的处理不当导致其原始 ~9Gbit 性能下降,新的,se la vi)

  • iperf3 通过专用链路 (mtu=9000):7.55 Gbits/s

  • gbe 局域网上的 iperf3:941Mbits/s
  • iperf3 over ssh 通过直接链路:1.03 Gbits/s
  • iperf3 通过 ssh 通过千兆位 LAN:941Mbits/s

    (很明显 ssh 使用的是正确的路由,并且它仍然比常规 gbe 使用速度稍快)

  • iperf3 通过 ssh 使用 ProxyCommand nc:1.1Gbit/s

    (另一个非常非常微薄的收益)

  • 使用 ProxyCommand nc 通过 ssh 的 iperf3 (mtu=9000):1.01Gbit/s

    (在这种情况下,mtu 似乎降低了链接速度)

答案1

无论如何,对于单个实例来说,SSH 似乎无法实现更快的传输。我终于意识到我应该在环回上运行测试(在linux 4.10.0上环回可以维持12Gbits/s),并且ssh到环回仍然只能在125~135Mbits/s附近执行;即便如此,SSD 上的 ext4 文件系统可能只能勉强达到约 30-50 Mbits/s;对于大型传输,我决定建立物理安全链接并使用 dd over netcat;其瓶颈在于磁盘阵列吞吐量,而不是文件系统或传输协议。我还能够让 aria2 与 sftp 一起工作,所以我放弃了并行 ssh 客户端传输。看来还有很长的路要走啊~

答案2

几乎 7Gbps 显然是一个错误值,因为它只是一个最大峰值(“尖峰”),而不是持续的传输速率。发生这种情况的原因可能是网络软件估计传输速度的方式(未占用所有带宽的小包可能会更快到达)。事实上,在 7Gbps 读数的同一行中,您有 200Mbps 的平均值。尝试持续传输足够大的文件,例如> 1GB

相关内容