sftp: Implement push support
Implement sftp push support with a sliding window to improve the speed of sftp uploads. The implementation is based on the one from the OpenSSH sftp client. It uses up to 64 outstanding write requests where each request is 32KiB in size which gives a maximum theoretical bandwidth of 2MiB per RTT. This patch results in substantial performance improvments, especially for high-latency links. Some benchmark figures: Old behavior: Copying from local server = 6.1MB/s Copying from local server with 250ms of RTT latency = 0.249MB/s Copying many small files with 250ms of RTT latency = 0.93 files per second New behavior: Copying from local server = 12.2MB/s Copying from local server with 250ms of RTT latency = 6.2MB/s Copying many small files with 250ms of RTT latency = 1.24 files per second OpenSSH sftp client: Copying from local server = 12.8MB/s Copying from local server with 250ms of RTT latency = 6.7MB/s Copying many small files with 250ms of RTT latency = 1.33 files per second https://bugzilla.gnome.org/show_bug.cgi?id=523015
parent
9d90065b
Please register or sign in to comment