While working on our Discards whitepaper and testing our new Smart Discards feature, we took a lot of performance measurements. One of these 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, please read our recent white paper linked below. I work closely with our sales team, and look forward to any comments or questions you may have.