I’ve been monitoring the wear and tear on my IPFire hardware (“Topton-style” Fanless Mini PC) and wanted to share some telemetry regarding NVMe endurance. While most focus on Total Bytes Written (TBW), I found that Host Write Commands are often the silent killer for budget-friendly SSDs.
My System Stats (CWdisk-128G):
- Power On Hours: 14,866 (~1.7 years)
- Total Data Written: 4.81 TB
- Host Write Commands: 855,947,755
- Current Wear: 1% used
The Issue:
The high command count indicates an average write size of only ~5.6 KB per command. This frequent “pulsing” triggers high Write Amplification, as the controller must cycle NAND pages even for tiny metadata updates.
On CU200, I noticed that Suricata’s default stats interval (8s) was a major contributor to these frequent small writes on the NVMe disk.
I estimate that in just 26 hours, these suricata stats alone generated over 23,000 write operations.
To mitigate this, I’ve disabled Suricata’s internal statistics. (little to no value for me these stats)
Suricata Configuration Change:
In /etc/suricata/suricata.yaml:
# Global stats configuration
stats:
enabled: no
interval: 0
Discussion:
Beyond disabling unnecessary Suricata stats logs, what other optimizations are you using to increase the lifespan of NVMe disks in IPFire?
Have you identified other processes that write small amounts of data very frequently (seconds apart) and tuned them?