The Placebo Effect
It’s January 2nd. New Year, New Homelab. My Synology DS1819+ felt “slow”. I don’t know what that means, but I felt it. Two empty NVMe slots were staring at me. The marketing promised “20x faster performance”. I had the Amazon cart open. Two 1TB Samsung 970 EVOs. $200.
The Diagnostic
Before clicking “Buy”, I decided to act like an commander for five minutes. “Is it actually slow? Or am I just bored?”
I installed iperf3 on the NAS (via Docker) and my desktop.
# On NAS
iperf3 -s
# On Desktop
iperf3 -c 192.168.20.7
Result:
[SUM] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec
941 Mbps. On a Gigabit connection. That is 94% line rate. The NAS literally cannot send data any faster over this cable.
The Bottleneck Analysis
“Okay,” I thought, “The network is maxed. But maybe the disks are thrashing? Maybe the cache will help directory listing?”
I looked at my workload:
- Plex Streaming: Large sequential reads.
- File Backups: Large sequential writes.
- Photo Viewing: Small random reads (thumbnails).
NVMe Cache excels at Random I/O. Database queries. VM virtual disks. It does almost nothing for Sequential I/O. If you are streaming a 4K movie, the HDD can already read at 150MB/s. The network is capped at 125MB/s. The SSD is just a spectator.
The Decision
I realized that for 90% of my use cases, the NVMe cache would be a $200 placebo. It might make the DSM web interface load 0.5 seconds faster. It would do zero for my backups or movies.
I closed the Amazon tab. I saved $200. And I learned a valuable lesson: Measure before you optimize.
How to Test Your Own NAS
Don’t guess. Measure.
- Network Limit: Run
iperf3. If you hit ~940Mbps, your network is the bottleneck, not the drives. - Disk Limit: SSH into your NAS and use
dd(carefully!) orfioto test local read speeds.# Read test (safe) hdparm -tT /dev/sata1 - Workload Analysis: Are you running 10 VMs? Get the cache. Are you storing ISOs? Save your money.