An August 1st blog post on Tom's Hardware reports that the new Android 4.3 NOW has support for the eMMC TRIM command. How odd that the Android OS that's on 80% of smart phones sold last quarter does not support eMMC TRIM for old deleted data, a feature which has been in the JEDEC specification since version 4.4 which was released in March of 2009.
The symptom reported is that the Nexus 7 is fast after first purchased, but slows down considerably as time goes on. This is because as more and more data is downloaded and later deleted, is not TRIMed from the eMMC device, the eMMC device stills manages that old-deleted data along with the live active data. The reported fix is to run a utility (fstrim) when the device is idle for a long period of time. This utility performs TRIMs on areas of the media that the file system identifies as non-allocated, in periods of long system idle.
So why did Android have the file system take care of this bit of housekeeping itself? Choosing a more flash-aware file system like Reliance Nitro would have not only negated the need for this utility it would make the process transparent for the user. Was this just a mis-configuration that testing did not reveal?
TRIM is important not just for performance but also for extending the life of the Flash memory. An eMMC has to perform garbage collection and maintain it thinks is still needed. If the file system identifies some data as un-need in the future, (TRIM) then there is less data to be moved in Garbage collection, which improves both performance and reduces the Flash wear, thus increasing the endurance of the flash and life of the product. Given that eMMC has been the primary storage for mobile phones since about 2010 and Android has been gaining market share since about 2009, this seems quite surprising. Reliance Nitro has supported TRIM/Discard since its first version. It just makes you wonder if there are other oversights in the Android storage stack.