[Flashbench] USB Stick: 8GB SanDisk Cruzer Micro (2008)

Arnd Bergmann arnd at arndb.de
Sun Apr 24 19:15:19 UTC 2011


On Sunday 24 April 2011 19:55:32 Sitsofe Wheeler wrote:
> On Sun, Apr 24, 2011 at 04:59:27PM +0200, Arnd Bergmann wrote:

> # ./flashbench --open-au /dev/sdb --erasesize=1048576 --blocksize=2048 --random --open-au-nr=10
> 1MiB    7.57M/s 
> 512KiB  3.31M/s 
> 256KiB  2.67M/s 
> 128KiB  2.64M/s 
> 64KiB   2.15M/s 
> 32KiB   2.2M/s  
> 16KiB   1.74M/s 
> 8KiB    679K/s  
> 4KiB    575K/s  
> 2KiB    317K/s  
> 
> # ./flashbench --open-au /dev/sdb --erasesize=1048576 --blocksize=2048 --random --open-au-nr=11
> 1MiB    4.66M/s 
> 512KiB  2.69M/s 
> 256KiB  1.94M/s 
> 128KiB  1.23M/s 
> 64KiB   687K/s  
> 32KiB   356K/s  
> 16KiB   189K/s  
> 8KiB    104K/s 
> 4KiB    51.2K/s 
> 2KiB    25.9K/s 
> 
> So the best --open-au-nr is 10.

Ok, excellent!

> > For completeness, please rerun the -f test with these parameters:
> > 
> > flashbench -f /dev/sdb --erasesize=1048576 --blocksize=512 --random
> 
> # ./flashbench -f /dev/sdb --erasesize=1048576 --blocksize=512 --random
> 1MiB    2.08M/s  7.73M/s  2.03M/s  7.74M/s  2.06M/s  7.73M/s
> 512KiB  7.94M/s  2.04M/s  7.44M/s  7.58M/s  7.11M/s  7.26M/s
> 256KiB  7.29M/s  2.1M/s   1.73M/s  7.49M/s  7.33M/s  2.04M/s
> 128KiB  7.28M/s  7.79M/s  2.07M/s  7.41M/s  6.57M/s  2.03M/s
> 64KiB   2.09M/s  10.8M/s  2.23M/s  11.1M/s  5.24M/s  2.23M/s
> 32KiB   1.74M/s  4.64M/s  4.88M/s  1.75M/s  4.4M/s   4.75M/s
> 16KiB   1.05M/s  1.03M/s  1.03M/s  1.03M/s  1.01M/s  1.59M/s
> 8KiB    436K/s   427K/s   427K/s   330K/s   430K/s   327K/s
> 4KiB    400K/s   394K/s   395K/s   309K/s   396K/s   311K/s
> 2KiB    176K/s   198K/s   187K/s   339K/s   306K/s   303K/s
> 1KiB    87.8K/s  87.7K/s  88.4K/s  88.4K/s  88.2K/s  88.2K/s  
> 512B    43.2K/s  43.9K/s  44K/s    42.7K/s  44K/s    58.4K/s  
> 
> What does this last result show?

It's a bit unexpected: The numbers for the large block sizes are
much more random than I'd expect them, which hints that the erase
size was actually incorrect. Compare these to your original numbers
for 4 MB erasesize, which are almost identical for each column
except the first one. In particular, the 64KiB row should give
results of around 10 MB/s consistently, which it does not.

The thing that should be seen in this case is one column that is
consistently either worse or better than the others, but that
is not the case.

The most likely interpretation to me is that this is an MLC
flash that has 2 MB erase blocks but in fact writes the faster
part of each erase block before it writes the slower part.

Unfortunately, these variations have so far prevented me
from automating flashbench to the point where you can run
it without manual interaction and a bit experience. Could you
run flashbench -f again with a 2 MB erasesize to see if it
makes a difference? You can also run the --open-au --random
test again with 10 and 11 erase blocks with that size, but
I don't expect many changes there other than hopefully a
better performance in the 10 * 2 MB erase block case compared
to 10 * 1 MB.

An important result of this is that the page size of this
USB stick is 4 KB, not how every smaller column is only half
the speed of the one above it -- it takes the same time to
write 4 KB that it takes to write 512 byte. The good news for
you is that this stick has almost perfect characteristics for
use in Linux, even with ext3, as long as the partitions are
correctly aligned and you use 4 KB block size (or 64 KB clusters
in fat32).

	Arnd



More information about the Flashbench-results mailing list