We took a lot of performance measurements while working on a recent discards whitepaper “Improving Flash Media Lifetime and Performance with Discards” and testing the new Smart Discards feature included in the Reliance Nitro file system. One of those measurements really stands out – but first a quick explanation.
At the device level, a discard (also called trim or unmap) is used to notify the underlying flash media that a block of data is no longer in use. This discard notification is handled by the firmware, and is used to optimize compactions – where live data is collected from one or more erase blocks and written to a new one, allowing the others to be erased. Without discards, all written data is treated as live by the firmware, and the drive will get to a point where slow synchronous compactions are necessary to continue writing, causing additional latency to the device and a reduction in write performance.
When formatted, this 8 GB eMMC 5.0 part showed a total capacity of 7.13 GB. Our block device I/O test writes and then overwrites data on the media, measuring the throughput for each operation. In the chart above, the performance drop occurs shortly after the total data written to the media exceeds the total capacity. This decrease in performance was significant, with the write speed dropping from roughly 5.5 MB/s to less than 1 MB/s.
Removing this drop and maintaining high throughput was the goal of our Smart Discards feature for Reliance Nitro 5.0. If you’d like to know more about how Smart Discards can give your project the best performance over time, click here to read our recent white paper.