我们经常需要在两台主机之间传输大量文件(高达50 GB),传输速率似乎永远不会达到networking的预期吞吐量。 有几点可能是瓶颈,但是它们的理论上限都超过了实际的传输速率。 这是一个典型的设置:
笔记本电脑 – > 802.11n – > AP – > CAT 6电缆 – > 10/100 Mbits路由器 – >桌面
在这方面,瓶颈显然是路由器,这会限制传输速率为100 Mbits / sec。 即使如此,我很less看到传输速率(scp)超过9.5 MB / s,代表76 Mbits / sec,或只有理论上限的76%。
在接入点真的有24%的开销,还是有其他限制速度? 它可能是磁盘I / O(虽然SATA的额定速度为1.5 Gbps),或者磁盘和NIC之间的主板上的任何东西(我怎么测量它?)。
有没有办法知道确切的(*)瓶颈在哪里? 如果100Mbps路由器的速度不能达到76Mbps以上,将networking升级到千兆比特增加吞吐量,还是因为其他地方的瓶颈,我仍然可以达到76Mbps。
(*),或者至less有足够的说服力让老板同意投资升级networking的一部分
你的问题是你一次testing了太多东西:
既然你提到SSH,我会假设这是一个unix系统…
你可以用一个简单的排除磁盘读取速度的问题
dd if=yourfile of=/dev/null #or pv yourfile > /dev/null
在接收端你可以做一个简单的磁盘写入testing
dd if=/dev/zero of=testfile bs=1M count=2000 # or dd if=/dev/zero bs=1M count=2000 | pv > testfile
dd并不是真正的“基准”,但是由于scp使用顺序IO,所以它足够接近
你也可以通过类似的方式来testingSSH
dd if=/dev/zero bs=1M count=100 | ssh server dd of=/dev/null # or dd if=/dev/zero bs=1M count=100 | pv | ssh server dd of=/dev/null
最后,要排除SSH是瓶颈,可以使用nc来testingnetworking性能
server$ nc -l 1234 > /dev/null client$ dd if=/dev/zero bs=1M count=100 | pv | nc server 1234 # or client$ dd if=/dev/zero bs=1M count=100 | nc server 1234
如果你真的想正确testingnetworking,安装和使用像iperf,但NC是一个很好的开始。
我会开始与NCtesting,因为这将排除最多的东西。 你也应该运行testing,而不使用无线。 802.11n可以很容易地将一个100mbit的端口最大化,但是只有当你有正确的设置。
(Ubuntu> = 12.04默认为netcat-openbsd。如果你使用netcat-traditional, nc -l -p 1234 > /dev/null可能是你想要的)。
这样想,
您有一个缓慢(笔记本电脑磁盘速度较慢)的SATA磁盘运行一个文件系统或另一个,然后变成基于IP的文件共享协议,如SMB。 然后这将变成wifi格式,然后命中一个AP,然后通过有线以太网(这需要一些重新格式化)到一个非常缓慢的switch.router然后到一个可能相当慢的桌面上,打破了你的文件系统格式的select,最后到磁盘上。 所有这些都发生在每个数据包上,如果不是所有数据包都需要在发送下一个数据包之前发回一个确认数据包的话。
我很惊讶你看到你的速度一样快!
这里有一个线索,当您需要传输文件时,将笔记本电脑连接到100Mbps交换机/路由器 – 严重的是,它会更快,更快。 另外考虑在每一端更快的磁盘,并确保您也使用高效的文件传输机制。
希望这可以帮助。
正如Chopper3所暗示的那样,也可以尝试使用rsync-over-ssh来处理这种大小的文件,因为很可能出现问题。 通过50GB传输无法获得超过45GB的容量,并导致失败。 这可能也可能会减less你的开销,但我没有亲自testing过这个大的文件。
当传输数千个小文件时,rsync也可以大大减less开销 – 我运行一次的75K文件/ 1500dir / 5.6K平均文件大小testing花了12分钟用FTP和SFTP,用SCP 10分钟,但是用rsync-over-ssh只花了1分50秒由于减less安装/拆卸开销。 没有SSH的Rsync在1分33秒时只能快20秒。
您可以使用此命令来测量磁盘的读取速度:
hdparm -tT /dev/sdX
(用盘符replaceX)
1.5 / 3 / 6gbps在技术上是SATA传输速度,但大多数磁盘只能连续读取50-60mbps。