Rclone mount settings for 10Gbps LAN speeds (webdav)?

And also, I think it would be helpful to get a pprof with the same multi-thread streams disabled. You will probably need to use core/command for that: Remote Control / API


There also a few single-threaded benchmarks mentioned here that would be useful to have numbers for, as a baseline for single-threaded transfers: Benchmarking - mergerfs

Ok, transferring a single 12 GiB mkv video file.

Non-multithreaded copy:

rclone copy --no-check-certificate --progress --multi-thread-streams=0 copyparty-local-shrimp:/protected/test.mkv /home/gremious/Test

Speed: 250 MiB/s

CPU: Irix 70% (Real 1.8%)

(I tried out of curiosity, --multi-thread-streams=6 does put that to ~1 GiB/s)

Mount2 with max speed settings:

rclone mount2 --no-check-certificate --vfs-cache-mode off --vfs-read-chunk-streams 4 --vfs-read-chunk-size 8M gremy-copyparty-local: /mnt/user/copyparty

Speed: ~700 MiB/s

CPU: Irix 230% (Real 5%)

Moun2 with default settings:

(wasn’t sure if you wanted this to be more barebones too)

rclone mount2 --no-check-certificate --vfs-cache-mode off gremy-copyparty-local: /mnt/user/copyparty

Speed: 300 MiB/s

CPU: same as rclone copy, Irix ~70% (Real 1.8%)


I’m trying, but am failing to run the copy command over core/command. Do you happen to know what’s wrong with the following:

rclone rc core/command command=copy -o no-check-certificate -o multi-thread-streams=0 -a "copyparty-local-shrimp:/protected/test.mkv" -a "/home/gremious/Test/test.mkv"

output:

== snip big usage dump ==
Command copy needs 2 arguments maximum: you provided 3 non flag arguments: [\"copyparty-local-shrimp:/protected/test.mkv\" \"/home/gremious/Test/test.mkv\" \"\"]\n"

So I tried providing it as 1 flag:

rclone rc core/command command=copy  -o no-check-certificate -o multi-thread-streams=0 -a "copyparty-local-shrimp:/protected/test.mkv /home/gremious/Test/test.mkv"

No bueno:

{
        "error": true,
        "result": "2025/12/07 18:13:17 CRITICAL: Failed to create file system for \"\": can't use empty string as a path\n"
}

It really thinks I gave it an empty string somewhere.

I assume operations/copyfile is going to be multi-threaded by default?


Here you go, these are the ones that seem relevant.

This is copying the same one single ~12 GiB file as above.

Enable nullrw mode with nullrw=true. This will effectively make reads and writes no-ops. Removing the underlying device / filesystem from the equation. This will give us the top theoretical speeds.

sudo mergerfs -o cache.files=off,category.create=pfrd,func.getattr=newest,dropcacheonclose=false,nullrw=true /home/gremious/Test /mnt/user/copyparty/

Copying a file out: 1.3 GiB/s

Configure mergerfs to use a tmpfs branch. tmpfs is a RAM disk. Extremely high speed and very low latency. This is a more realistic best case scenario. Example: mount -t tmpfs -o size=2G tmpfs /tmp/tmpfs

sudo mkdir /tmp/tmpfs
sudo mount -t tmpfs -o size=13G tmpfs /tmp/tmpfs
sudo mergerfs -o cache.files=off,category.create=pfrd,func.getattr=newest,dropcacheonclose=false /tmp/tmpfs/ /mnt/user/copyparty/

1.1 GiB/s, with some drops

Configure mergerfs to use a local device filesystem branch. NVMe, SSD, HDD, etc. Test them individually. If you have different interconnects / controllers use the same storage device when testing to ensure consistency.

This is what we tested above I believe.