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)