On Thursday 07 June 2012, David Brown wrote:
> On Wed, Jun 06, 2012 at 07:11:37AM +0000, Arnd Bergmann wrote:
> 
> > If you don't need the data on your card, could you run these
> > commands on yours:
> > 
> > for i in 2 3 30 31 ; do 
> >       sudo flashbench --open-au --open-au-nr=30 --erasesize=$[512 * 1024] \
> >               /dev/mmcblk0  --offset=$[24*1024*1024]
> > done
> 
> Did you mean to use $i somewhere in that loop? 

oops, yes it should be "--open-au-nr=$i"

> I ran it with the
> command given above (just once since it doesn't mention $i).  Also,
> this is on a USB card reader.  I'd have to get a bit more creative to
> be able to run this on my target, since the card is also the root
> filesystem.

USB card reader is fine for this test.

> 512KiB  962K/s  
> 256KiB  398K/s  
> 128KiB  201K/s  
> 64KiB   101K/s  
> 32KiB   152K/s  
> 16KiB   719K/s  

FWIW, these are the results for the "good" card:

for i in 2 3 30 31 ; do echo == $i == ; sudo ./flashbench --open-au 
--open-au-nr=$i --erasesize=$[512 * 1024] /dev/mmcblk0  
--offset=$[24*1024*1024] ; done
== 2 ==
512KiB  7.42M/s 
256KiB  7.65M/s 
128KiB  7.64M/s 
64KiB   7.41M/s 
32KiB   6.46M/s 
16KiB   4.78M/s 
== 3 ==
512KiB  7.9M/s  
256KiB  8.06M/s 
128KiB  8.2M/s  
64KiB   8.35M/s 
32KiB   6.61M/s 
16KiB   3.95M/s 
== 30 ==
512KiB  8.41M/s 
256KiB  8.21M/s 
128KiB  8.16M/s 
64KiB   8.32M/s 
32KiB   6.76M/s 
16KiB   4.31M/s 
== 31 ==
512KiB  8.08M/s 
256KiB  7.41M/s 
128KiB  6.73M/s 
64KiB   5.73M/s 
32KiB   3.87M/s 
16KiB   1.78M/s 

note how for values up to open-au-nr=30  the performance is stable for all block
sizes over 64k and only degrades a little below that, while for open-au-nr=31
it gets much slower for small block sizes.

The "bad" card looks very similar to yours:
for i in 2 3 30 31 ; do echo == $i == ; sudo ./flashbench --open-au 
--open-au-nr=$i --erasesize=$[512 * 1024] /dev/mmcblk0  
--offset=$[24*1024*1024] ; done
== 2 ==
512KiB  382K/s  
256KiB  232K/s  
128KiB  272K/s  
64KiB   535K/s  
32KiB   521K/s  
16KiB   1.21M/s 
== 3 ==
512KiB  393K/s  
256KiB  176K/s  
128KiB  223K/s  
64KiB   606K/s  
32KiB   585K/s  
16KiB   976K/s  
== 30 ==
512KiB  752K/s  
256KiB  359K/s  
128KiB  191K/s  
64KiB   103K/s  
32KiB   145K/s  
16KiB   827K/s  
== 31 ==
^C
(I skipped this one, it's rather pointless)


The effect becomes much more visible by trying erasesize=4MB:

for i in 2 3 4 ; do echo == $i == ; sudo ./flashbench --open-au --open-au-nr=$i 
--erasesize=$[4096 * 1024] /dev/mmcblk0  --offset=$[24*1024*1024] ; done
== 2 ==
4MiB    3.09M/s 
2MiB    4.93M/s 
1MiB    5.52M/s 
512KiB  5.52M/s 
256KiB  5.53M/s 
128KiB  5.51M/s 
64KiB   5.52M/s 
32KiB   4.51M/s 
16KiB   1.87M/s 
== 3 ==
4MiB    4.34M/s 
2MiB    3.61M/s 
1MiB    1.67M/s 
512KiB  1.48M/s 
256KiB  1.39M/s 
128KiB  1.21M/s 
64KiB   1.14M/s 
32KiB   1.03M/s 
16KiB   2.08M/s 
== 4 ==
4MiB    5.52M/s 
2MiB    3.45M/s 
1MiB    1.65M/s 
512KiB  826K/s  
256KiB  414K/s  
128KiB  208K/s  
64KiB   104K/s  
32KiB   247K/s  
16KiB   2.24M/s 

So this card can handle 2 open AUs just fine, three of them barely,
but not 4 or more, which is not a particular good behavior. For any
block sizes of 16kb or smaller, this card does provide some form of
caching though that makes up for this problem to some degree.

        Arnd

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to