I'm experiencing much slower speeds with rclone copy vs aws s3 cp. I'm doing a transfer between an EC2 node and S3 via an s3 endpoint. All within the same region.
Not 100% sure why this could be. I'm wondering if there are any flags I could set that would increase this speed? Or if it's natively an issue with rclone. Ideally I'll be mounting rclone, but I'm using copy to demonstrate the difference in transfer time.
I also notice that when rclone is transferring, it starts at the max bandwidth and then slowly decreases over time.
What is your rclone version (output from rclone version)
rclone v1.56.0
os/version: Microsoft Windows Server 2019 Datacenter 1809 (64 bit)
in some quick testing, from wasabi, a s3 clone to local.
if we assume that the time to checksum the dest is constant,
then it seems that the more threads the larger time gap.
about the speed slowing down, i believe that that rclone calculates the final speed based on the total time it takes to execute the rclone command, not the actual download time.
2021-11-04 18:43:16 DEBUG : file.test: Finished multi-thread copy with 16 parts of size 80.938Mi
2021-11-04 18:43:22 DEBUG : file.test: md5 = 98dcf7754eb6049147593c72d1128145 OK
2021-11-04 18:43:22 INFO : file.test: Multi-thread Copied (new)
Transferred: 1.265Gi / 1.265 GiByte, 100%, 48.869 MiByte/s, ETA 0s
Transferred: 1 / 1, 100%
Elapsed time: 24.9s
2021-11-04 18:53:34 DEBUG : file.test: Finished multi-thread copy with 256 parts of size 5.062Mi
2021-11-04 18:53:42 DEBUG : file.test: md5 = 98dcf7754eb6049147593c72d1128145 OK
2021-11-04 18:53:42 INFO : file.test: Multi-thread Copied (new)
Transferred: 1.265Gi / 1.265 GiByte, 100%, 58.592 MiByte/s, ETA 0s
Transferred: 1 / 1, 100%
Elapsed time: 21.6s
i thought of that but in the OP debug, rclone is not checking the hash.
what is rclone doing between 19:11:20 and 19:11:29?
on the one hand, rclone is checking the hash and not reporting that.
on the second hand, rclone is not checking the hash as server_side_encryption is used.
on the third hand, something else is going on
I think what is happening is that rclone checks the source and dest objects in parallel. However it discovers that the source object does not have a hash as it is a multipart upload, but it still does the destination hash anyway.
That is my guess...
@SeanDevonport can you try your original test with --ignore-checksum
If that is the case then there is an optimization we could do there - if the hash is returned as "" then we could cancel the other hash.
Seems that --ignore-checksum did the trick! Downloading the same file at 3.8s!
@ncw I also just wanted to check if you know if this carries over to rclone mount commands? If we use --ignore-checksum, would we achieve faster data transfer (obviously with cost of data-integrity)
@SeanDevonport I made the optimization of cancelling the other hash if the first returned an empty string.
This should make your copy without --ignore-checksum almost as fast as with it. Using --ignore-checksum is best if you are after absolute speed, but I'd be very interested in your tests with the code below - thanks!