Multi Thread Rsync Transfer

Solution 1:

OpenSSH is notorious for having window size limits which are not very friendly for high-latency connections. To determine the minimum window size for your desired throughput (let's ignore other overhead for now):

Window size = throughput * latency

So, if you want 25MB/sec (200,000,000 bits/sec) over a 25ms latency (0.025 seconds):

Window size = 200,000,000 * 0.025 = 5000000.0 bits

Divided by 8, that's roughly a 625KB window. Let's flip it around and look at a 64KB window (the internal cap in many versions of OpenSSH) at your latency:

throughput = 512000 bits / 0.025s latency = 20480000.0 bits/sec = ~2.5MB/sec

That's pretty close to what you're seeing (you may have some other overhead as well.)

So, I would check in the following order:

  • Ensure your OS has its TCP window sizes set sanely and autoscaling enabled.
  • Make sure you are using a version of SSH without a fixed internal window size (I believe this was fixed around OpenSSH 4.7) OR install HPN-SSH, which is patched to address these issues.
  • Try using lighter options for SSH (arcfour, for example)