Earlier this year, our founder Andrew Murray presented a talk at the Embedded Open Source Summit 2024 in Seattle. The talk was about SD cards, their performance and reliability. The synopsis of the talk follows:
“The underlying storage of an SD card is NAND flash, which is inherently unreliable, has a limited number of program/erase cycles, and has constraints on how data is written. Fortunately, the firmware in an SD card overcomes these challenges well enough to provide a cost-effective and reliable block-based storage medium; though, this is not without side-effects which can impact performance and endurance. In this talk, we’ll delve into the ‘write to destruction’ testing that we’ve performed, which illustrates how access patterns and write amplification can significantly impact the lifespan of an SD card. We’ll show you what happens when an SD card fails and provide actionable steps to maximise the lifespan of an SD card in Linux. We will also examine the performance characteristics of SD cards and explore how access patterns can impact write performance. We’ll present methods for analyzing performance and provide practical steps for improving throughput. Finally, we will introduce Krill Kounter, an open-source daemon and library for embedded devices for monitoring SD card wear and indicators of write amplification over its lifetime.”
You can watch the talk on YouTube:
During the talk we provided information on KrillKounter which is our open-source tool for monitoring lifetime writes to SD cards. Understanding the amount of data written to an SD card and the patterns of data access can aid determination of wear and thus enable estimation of remaining lifespan. Find out more about KrillKounter on our GitHub page.
The talk was well received with positive reviews written by both Memfault and Bootlin.