MacOS: Slow mount performance for SSD cached external HDD data source

What is the problem you are having with rclone?

I am trying to locally setup the external HDD to be mounted via MacFUSE (installed via the pkg installer) to a path and use SSD tiering/caching to speed up reads/writes and to reduce noise.
The performance benchmarks I’ve conducted with the mount settings (details below) do not indicate any performance benefit, and I wonder what settings need to be tweaked to get the benefit of SSD caching.

Run the command 'rclone version' and share the full output of the command.

❯ rclone version
rclone v1.71.2
- os/version: darwin 15.7.1 (64 bit)
- os/kernel: 24.6.0 (arm64)
- os/type: darwin
- os/arch: arm64 (ARMv8 compatible)
- go/version: go1.25.3
- go/linking: dynamic
- go/tags: cmount

Which cloud storage system are you using? (eg Google Drive)

local storage

The command you were trying to run (eg rclone copy /tmp remote:tmp)

❯ rclone mount exthdd:/Path/to/HDD ~/tmp \
--vfs-case-insensitive=false  \
--no-unicode-normalization=false \
--vfs-block-norm-dupes \
--vfs-cache-mode=full \
--vfs-cache-min-free-space=10G \
--vfs-fast-fingerprint \
--vfs-links \
--volname="Temp Vol" \
--default-permissions \
--use-server-modtime \
--transfers=8 \
--one-file-system \
--dir-cache-time=30d \
--vfs-cache-max-age=30d \
--vfs-refresh \
--vfs-read-chunk-size=128M \
-o auto_cache -o jail_symlinks

Please run 'rclone config redacted' and share the full output. If you get command not found, please make sure to update rclone.

❯ rclone config redacted
[exthdd]
type = local
copy_links = true
unicode_normalization = true
one_file_system = true
case_sensitive = true
no_set_modtime = true
time_type = ctime

❯ rclone config paths
Config file: ~/.config/rclone/rclone.conf
Cache dir:   ~/Library/Caches/rclone
Temp dir:    /var/folders/wk/4x39b6p153lbnsfsf7wglrqr0000gn/T

A log from the command that you were trying to run with the -vv flag

NOTE: Redacted log to fit in gist

Benchmarks

fio-crystaldiskbenchmark

(Emulating CrystalDiskBenchmark using fio)

This seems to give oddly boosted results to the mount point...

HDD
Task         Read (MiB/s)  Read (IOPS)  Write (MiB/s)  Write (IOPS)
SEQ1M Q8T1   56            55           42             41
SEQ1M Q1T1   17            17           17             17
RND4K Q32T1  1             134          0              93
RND4K Q1T1   0             36           0              33

TR-002 DISK00 / Apple M4

Mount
Task         Read (MiB/s)  Read (IOPS)  Write (MiB/s)  Write (IOPS)
SEQ1M Q8T1   702           701          729            728
SEQ1M Q1T1   712           712          752            752
RND4K Q32T1  101           25942        59             15012
RND4K Q1T1   126           32281        70             18007
Could not find disk: exthdd{vECL7}:/Path/to/HDD

 / Apple M4

Internal SSD
Task         Read (MiB/s)  Read (IOPS)  Write (MiB/s)  Write (IOPS)
SEQ1M Q8T1   32405         32405        1960           1944
SEQ1M Q1T1   2255          2255         1626           1626
RND4K Q32T1  219           56103        62             15954
RND4K Q1T1   57            14533        30             7556

APPLE SSD / Apple M4

hyperfine

git clone from HDD to Internal SSD
❯ hyperfine --warmup=2 'git clone /Path/to/HDD/temp && rm -rf temp' -r 10
Benchmark 1: git clone /Path/to/HDD/temp && rm -rf temp
  Time (mean ± σ):      7.236 s ±  0.054 s    [User: 0.647 s, System: 6.174 s]
  Range (min … max):    7.177 s …  7.339 s    10 runs
git clone from Mount to Internal SSD
❯ hyperfine --warmup=2 'git clone ~/tmp/temp && rm -rf temp' -r 10
Benchmark 1: git clone ~/tmp/temp && rm -rf temp
  Time (mean ± σ):      7.450 s ±  0.166 s    [User: 0.652 s, System: 6.198 s]
  Range (min … max):    7.274 s …  7.720 s    10 runs
git clone from Internal SSD to HDD
❯ cd /Path/to/HDD && hyperfine --warmup=2 'git clone ~/Documents/temp && rm -rf temp' -r 5
Benchmark 1: git clone ~/Documents/temp && rm -rf temp
  Time (mean ± σ):     84.577 s ±  3.170 s    [User: 0.761 s, System: 6.348 s]
  Range (min … max):   79.000 s … 86.485 s    5 runs
git clone from Internal SSD to Mount
❯ cd tmp && hyperfine --warmup=2 'git clone ~/Documents/temp && rm -rf temp' -r 5
Benchmark 1: git clone ~/Documents/temp && rm -rf temp
  Time (mean ± σ):     125.925 s ±  5.383 s    [User: 0.833 s, System: 8.757 s]
  Range (min … max):   121.892 s … 134.978 s    5 runs

Maybe it is me not fully grasping your tests’ results because I see clear difference between HDD and mount. With mount being much faster.

Could you point to benchmark which let you claim that:

Sorry, I realized I may be overwhelming people with a bunch of numbers without any relevant context behind them.

So for fio-crystaldiskmark, the reported numbers are misleading because the RND4k Q1 (random rw io 4kb chunk queue depth 1) seems faster than the internal SSD which should not be possible (if my assumption is incorrect please let me know why). The mount seem faster compared to the HDD in this test so I moved onto a real world test for rnd4k - git repo performance.

In the 2nd benchmark (using hyperfine for git clone), we see that the mount point indeed performs slowly compared to the HDD, whereas the mount should perform much better as it was trying to indicate with the fio benchmark results.

X to Internal SSD numbers are for real git repo read performance

Internal SSD to X numbers are for real git repo write performance