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