Contributors: Arnd Bergmann
Packages affected: Kernel
Adapt the block layer and file systems to be aware of low-end flash media characteristics to improve performance.
The work from the previous cycle at analyzing flash media (https://wiki.linaro.org/WorkingGroups/Kernel/Projects/FlashCardSurvey) has shown systematic problems with the way that Linux deals with flash media pretending they are hard drives, while the flash media expect specific access patterns that Linux does not provide, typically a single-partition FAT32 file system with a specific geometry. This causes an very high write amplification, which manifests as low performance and reduced longevity of media.
Fortunately, there are a multiple ways to improve the current situation by changing the way that Linux tries to operate.
- Cassandra uses SD cards to store data on her mobile phone. Unfortunately, her data constantly gets destroyed as the cards wear out. With the reduced write amplification that we get by improving the block layer, her cards actually last long enough for Cassandra to show other people the documents she created.
- Steve always buys the newest and fastest hardware. For some reason, it still takes him a long time to do anything with it because even a $200 SD card takes half a second for writing a single data block as he is doing many things in parallel. With the block layer optimization, this can be a hundred times faster.
Elevator support for erase block handling
Block allocation in file systems
Change the VFS to deal with larger than 4KB block sizes
WorkingGroups/KernelArchived/Specs/block-layer-optimizations-for-flash (last modified 2013-01-14 19:43:28)