通过本地网络将文件从一台计算机传输到另一台计算机时,为什么限制scp
在 8MB 左右?我正在传输几百 GB 的数据(电影等),并运行了以下命令:
scp -rv ../../cygdrive/e/plex [email protected]:/home/caleb/Desktop
这是从我的 windows 盒子传输到我的 ubuntu 盒子。几乎每个文件的上限约为 8MB/s:
Justified Season 2 Episode 10 - Debts and Accounts.avi 100% 350MB 7.8MB/s 00:45
Sending file modes: C0050 367218038 Justified Season 2 Episode 11 - Full Commitment.avi
Sink: C0050 367218038 Justified Season 2 Episode 11 - Full Commitment.avi
Justified Season 2 Episode 11 - Full Commitment.avi 100% 350MB 7.8MB/s 00:45
Sending file modes: C0050 367451326 Justified Season 2 Episode 12 - Reckoning.avi
Sink: C0050 367451326 Justified Season 2 Episode 12 - Reckoning.avi
Justified Season 2 Episode 12 - Reckoning.avi 100% 350MB 7.8MB/s 00:45
Sending file modes: C0050 367779546 Justified Season 2 Episode 13 - Bloody Harlan.avi
Sink: C0050 367779546 Justified Season 2 Episode 13 - Bloody Harlan.avi
Justified Season 2 Episode 13 - Bloody Harlan.avi
我 100% 确定这是通过 LAN 进行的,并且两台机器都硬连线到我的路由器上的 1000Mb/s (1Gb) 交换机。我很少会看到一个文件跃升至 100MB/s+,但几乎所有文件都受到上述限制。
我错过了什么吗?我还可以采取哪些其他故障排除步骤?
答案1
首先,您应该检查它是否达到 Windows 或 Ubuntu 上的存储性能限制。如果E:
Windows 上有 USB 连接驱动器或存储卡,则可能达到 8MB/s。
否则 SSH 加密可能会成为瓶颈。尝试使用轻量级密码(例如arcfour
.
scp -o Cipher=arcfour -rv /cygdrive/e/plex [email protected]:/home/caleb/Desktop
它可能会受到 Cygwin 二进制文件开销的影响。您可能想使用WinSCP以获得更好的性能。
或者,您可以在 Ubuntu 主机上设置 Samba 共享。 SMB 可以比 SCP 更接近 LAN 上的真实线速,且开销更少。
答案2
您的实际速度是 8MB/sx 每字节 8 位= 64 Mb/s(兆位每秒)。这大约是理论最大值的 64%。对于操作系统开销、TCP/IP ACK 等,我并不太感到惊讶。前面的技巧可能会帮助您提高一点,但除非您使用千兆位以太网,否则您永远无法达到约 12 MB/s 以上。
答案3
网络链接的速度以兆为单位位每秒,而不是每秒兆字节。 “100 Mb/s”网络(应b
为小写)每秒可传输 100 兆比特。下一个加速速度是 10 倍,称为“1 Gb/s”或“千兆位”。
原始网络速度比应用程序速度快,因为数据包标头存在一些开销。以太网数据包的最大大小为 1500 字节,这最多会产生 1448 字节的 TCP 数据包(IP 标头 20 字节,TCP 标头 32 字节)。我不知道 SSH 到底增加了多少开销,但它必须至少允许一些协议标头和 MAC(20 或 32 字节),因此至少 48 字节。这就是 1500 字节中的 1400 字节。为接收者添加空间以发送回 TCP ACK 消息(66 字节),我们将其降至 1334/1500。如果 100 Mb/s = 12.5 MB/s,则数据速度为 11.1 MB/s。
11.1 MB/s 比 8 MB/s 快,但也快不了多少。以太网重传会带来一些不可避免的开销(我上面没有考虑到),还有路由器的少量开销。最大可实现速率 8 MB/s 听起来似乎很合理。
家庭路由器的速度通常限制为 100 Mb/s。千兆路由器成本更高。不过,最近的家用电脑上的网卡通常支持千兆位网络。如果您拥有千兆位以太网电缆(最便宜的以太网电缆的额定速度仅为 100 Mb/s)并直接连接两台计算机,您可能可以获得速度提高 10 倍的连接。您可以通过运行来检查您的网卡支持的速度/sbin/ethtool eth0
;除了“100baseT”(100 Mb/s)之外,还要寻找“1000baseT”(千兆)的“链接模式”。