Understanding benchmark results

I could use some help interpreting benchmark results!

Background - in my configuration, I have Duplicacy installed on my main NAS (QNAP TS-569 Pro, 2.13 GHz Atom, 3GB RAM). I have set up sequential backup jobs to 1) Backblaze B2 and 2) SFTP on local backup NAS (QNAP TS-509 Pro, 1.6GHz Celeron, 1GB RAM). Both NAS boxes are connected to the same Gigabit Ethernet switch and are capable of SMB transfer speeds over 80MB/sec.

Puzzle - in practice, Duplicacy’s backup speed to the local NAS hardly ever exceeds 11MB/sec (88 megabits/sec).

As recommended, I ran the benchmark against the local storage, with the following results:

-upload-threads 1

Generating 256.00M byte random data in memory
Writing random data to local disk
Wrote 256.00M bytes in 1.11s: 229.64M/s
Reading the random data from local disk
Read 256.00M bytes in 0.37s: 695.60M/s
Split 256.00M bytes into 52 chunks without compression/encryption in 12.67s: 20.21M/s
Split 256.00M bytes into 52 chunks with compression but without encryption in 14.82s: 17.28M/s
Split 256.00M bytes into 52 chunks with compression and encryption in 36.22s: 7.07M/s
Generating 64 chunks
Uploaded 256.00M bytes in 21.44s: 11.94M/s
Downloaded 256.00M bytes in 24.86s: 10.30M/s
Deleted 64 temporary files from the storage

-upload-threads 4

Generating 256.00M byte random data in memory
Writing random data to local disk
Wrote 256.00M bytes in 1.02s: 250.14M/s
Reading the random data from local disk
Read 256.00M bytes in 0.32s: 810.63M/s
Split 256.00M bytes into 52 chunks without compression/encryption in 12.67s: 20.20M/s
Split 256.00M bytes into 52 chunks with compression but without encryption in 14.71s: 17.41M/s
Split 256.00M bytes into 52 chunks with compression and encryption in 36.76s: 6.96M/s
Generating 64 chunks
Uploaded 256.00M bytes in 21.92s: 11.68M/s
Downloaded 256.00M bytes in 25.05s: 10.22M/s
Deleted 64 temporary files from the storage

So two questions for the experts out there:

  1. Is this telling me that the performance bottleneck is the CPU on the main NAS?
  2. If so, is there any way to init the target storage to not require encryption and/or compression?

Update: I tried benchmarking to the local SFTP storage from another small QNAP NAS (TS-230, 1.4GHz Realtek ARM64, 2GB RAM). Results are:

-upload-threads 1

Generating 256.00M byte random data in memory
Writing random data to local disk
Wrote 256.00M bytes in 3.04s: 84.22M/s
Reading the random data from local disk
Read 256.00M bytes in 1.12s: 228.47M/s
Split 256.00M bytes into 52 chunks without compression/encryption in 13.88s: 18.44M/s
Split 256.00M bytes into 52 chunks with compression but without encryption in 17.13s: 14.95M/s
Split 256.00M bytes into 52 chunks with compression and encryption in 17.51s: 14.62M/s
Generating 64 chunks
Uploaded 256.00M bytes in 12.16s: 21.06M/s
Downloaded 256.00M bytes in 11.55s: 22.17M/s
Deleted 64 temporary files from the storage

That’s nearly twice the throughput of my main NAS. So it looks like CPU processing power is the bottleneck on my TS-569 Pro NAS. Or have I missed something?

Watch CPU utilization during the test to answer that question. Likely the problem is your array’s seek latency

Why would you want to do it? This benchmark specifically measures backup performance, which is with compression and encryption. If you want to measure performance of your network or storage — there are other dedicated tools to that; but they won’t matter if you are interested in duplicacy performance.

Run the benchmark and measure what’s going on on both systems. CPU utilization per core, seek latency, network throughput, queue length on each drive. Run separate iperf3 test to rule out network bottlenecks.

As an aside, 2-3GB ram is very little; I strongly suggest against running anything, let alone duplicacy, on that hardware. Even if it here was sufficient ram theoretically, running more apps would rob memory from (already tiny) disk cache, desecrating any hope of getting any half-decent performance from your storage array. Run duplicacy (and other apps) on a separate appliance and use your nas as what they are - network attached storage.