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:

  1. Plex Streaming: Large sequential reads.
  2. File Backups: Large sequential writes.
  3. 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.

  1. Network Limit: Run iperf3. If you hit ~940Mbps, your network is the bottleneck, not the drives.
  2. Disk Limit: SSH into your NAS and use dd (carefully!) or fio to test local read speeds.
    # Read test (safe)
    hdparm -tT /dev/sata1
  3. Workload Analysis: Are you running 10 VMs? Get the cache. Are you storing ISOs? Save your money.