Poor SD Card performance can definitely have a negative effect on overall experience with your device, especially when considering apps that rely on speedy SD Card access, like the Gallery, or features, like Apps2SD.

XDA forum member brainmaster has been hard at work on tweaking some settings in Android to improve the situation in this very department. By adjusting a certain SD card cache value, he, along with many others on xda who tried this out, were able to significantly improve read speeds, usually at least doubling or tripling them, and in certain cases going even higher.

I thought it was a pretty interesting concept, so I decided to give it a run on my OG Moto Droid and outline my results here. It is worth noting that this process only focuses on the read speed of the SD Card and has no effect whatsoever on the write speed.

You must have root access with write permissions to /sys in order to modify any of the following values.

The basic idea behind this fix is to modify the amount of available read-ahead cache for reading SD Card data. By default, most ROMs will have anywhere from 4KB (for example, on the EVO 4G running Fresh) up to 128KB set aside for this task. In order to find the cache size on your device, fire up Root Explorer and navigate to:

/sys/devices/virtual/bdi/179:0/read_ahead_kb

If you plan on running this test yourself, you can simply modify the value in this file, save, and test away. However, know that upon reboot, it will return to default unless you make it permanent (more on that later).

I am currently running Project Elite 4.2 (Froyo base), which provides 128KB of cache by default. For the initial test, I did not make any modification to the cache value. I ran the test three times at the stock value and each of the modified values to ensure proper readings.

To run these tests, I am using an app called SD Tools which you can grab for free in the Android Market.

First Run: 128KB

As you can see, my card is quite slow, with the highest read speed at a mere 5.5 MB/s. The lowest was 5.4 MB/s, making the average speed 5.43 MB/s.

For the next run, I have modified the value to 1024KB and will increase by 1024KB for each subsequent test.

Second Run: 1024KB

The average speed for this run comes out to 7.8 MB/s which is an average speed increase of +2.37 MB/s. That's nothing to brag about, but I'll take any speed boost that I can get.

Third Run: 2048KB

According to the XDA thread, this is the setting in which most users achieved the best performance. My results were more sporadic than the previous tests, but the average speed for this run was 7.867 MB/s, giving a very slight +0.067 MB/s advantage over the 1024KB cache size.

Fourth Run: 3072KB

Again, my results lacked consistency. Even though the second test provided the fastest speed I've seen yet, the average speed of this run was only 7.83 MB/s, which is -0.0369 MB/s over the previous run.

Fifth Run (Final): 4096KB

This run produced the best results, but still not a whole lot different than the previous numbers. The average speed this go was 8.167 MB/s, which translates to +0.337 MB/s over the previous run and +0.3 MB/s over 2048KB cache, which was the fastest run prior to this one.

Conclusion

After applying the SD card cache fix, I saw a decent increase in read speed from about 5.4MB/s to 8.2MB/s. I urge everyone to give these tests a run for themselves - you may be very pleasantly surprised, especially if you original cache value was 4KB.

Once you find the value that works best for you, can you make it permanent by flashing the appropriate file found in the source thread through ClockworkMod Recovery (there are also instructions for setting the values with RA recovery or manually for those who do not want to flash or don't have CWM/RA).

If you decide to give this a go, let us know what value worked best for you along with your phone model in the comments.