On Mon, Mar 14, 2011 at 06:13:16PM +0100, Arnd Bergmann wrote:
On Monday 14 March 2011, Philippe De Muyter wrote:
I redid the first test after your above 'dd' command and got the attached file.
Ok, got it. Now it's much clearer: you have written 64K to the position 8MB, and everything between 8 MB and 9 MB can be clearly seen as slower than the data before and after, but still faster than the range from 16 to 20 MB. When you use the gnuplot UI, you can zoom into that area.
That is a very strong hint that the erase block size is indeed 1 MB.
I would suggest you redo the --open-au tests based on that. You had this:
tmp179:~ # ./flashbench --open-au --open-au-nr=4 --erasesize=$[1024 * 1024] /dev/sdb --random sched_setscheduler: Operation not permitted 1MiB 5.29M/s 512KiB 5.1M/s 256KiB 4.28M/s 128KiB 4.55M/s 64KiB 4.94M/s 32KiB 4.62M/s 16KiB 4.34M/s
It indicates that assuming 1 MB allocation units (erase blocks), the card can do random access on at least four of them.
I'd suggest you continue this test with larger numbers for --open-au-nr until you hit the cut-off. I'd assume that it's clearer than the previous numbers, too.
The other test you can do is finding the FAT area, using ./flashbench --findfat --fat-nr=10 --erasesize=$[1024 * 1024] /dev/sdb --random
This should show you if the card has any hardwired optimizations for storing the FAT in the beginning of the medium. Each column reflects one (1MB) AU, so anything that is optimized for the FAT will have different characteristics here than the normal ones.
Here are the raw results :
tmp179:~ # for i in `seq 1 10`; do echo $i; ./flashbench --open-au --open-au-nr= $i --erasesize=$[1024 * 1024] /dev/sdb --random; done 1 1MiB 5.53M/s 512KiB 5.53M/s 256KiB 5.3M/s 128KiB 4.65M/s 64KiB 5.07M/s 32KiB 4.74M/s 16KiB 4.38M/s 2 1MiB 5.14M/s 512KiB 5.19M/s 256KiB 4.78M/s 128KiB 4.67M/s 64KiB 4.89M/s 32KiB 4.61M/s 16KiB 4.32M/s 3 1MiB 5.27M/s 512KiB 5.3M/s 256KiB 4.95M/s 128KiB 4.66M/s 64KiB 4.93M/s 32KiB 4.63M/s 16KiB 4.32M/s 4 1MiB 5.53M/s 512KiB 5.19M/s 256KiB 4.52M/s 128KiB 4.65M/s 64KiB 5.04M/s 32KiB 4.5M/s 16KiB 4.3M/s 5 1MiB 5.22M/s 512KiB 5.2M/s 256KiB 4.6M/s 128KiB 4.73M/s 64KiB 4.22M/s 32KiB 3.8M/s 16KiB 3.25M/s 6 1MiB 5.27M/s 512KiB 5.08M/s 256KiB 4.11M/s 128KiB 3.28M/s 64KiB 4.05M/s 32KiB 3.52M/s 16KiB 3M/s 7 1MiB 5.07M/s 512KiB 5.13M/s 256KiB 4.1M/s 128KiB 3.17M/s 64KiB 3.37M/s 32KiB 2.87M/s 16KiB 2.28M/s 8 1MiB 5.24M/s 512KiB 5.03M/s 256KiB 4.13M/s 128KiB 3.13M/s 64KiB 3.18M/s 32KiB 2.02M/s 16KiB 2.41M/s 9 1MiB 5.22M/s 512KiB 4.95M/s 256KiB 4.07M/s 128KiB 3.05M/s 64KiB 2.99M/s 32KiB 1.9M/s 16KiB 2.19M/s 10 1MiB 5.3M/s 512KiB 4.87M/s 256KiB 4.03M/s 128KiB 2.98M/s 64KiB 2.85M/s 32KiB 1.8M/s 16KiB 2.03M/s tmp179:~ # ./flashbench --findfat --fat-nr=10 --erasesize=$[1024 * 1024] /dev/sdb --random 1MiB 4.76M/s 5.53M/s 5.53M/s 5.53M/s 5.53M/s 5.53M/s 5.53M/s 5.53M/s 5.53M/s 5.53M/s 512KiB 5.02M/s 4.71M/s 4.42M/s 4.77M/s 4.77M/s 4.77M/s 4.77M/s 4.77M/s 4.9M/s 4.77M/s 256KiB 4.38M/s 4.43M/s 4.59M/s 4.46M/s 4.59M/s 4.59M/s 4.59M/s 4.59M/s 4.9M/s 4.9M/s 128KiB 4.3M/s 4.67M/s 4.55M/s 4.55M/s 4.55M/s 4.55M/s 4.55M/s 4.51M/s 4.57M/s 4.65M/s 64KiB 4.73M/s 4.58M/s 4.64M/s 4.62M/s 4.64M/s 4.64M/s 4.63M/s 4.63M/s 4.59M/s 4.62M/s 32KiB 4.45M/s 4.44M/s 4.45M/s 4.45M/s 4.44M/s 4.46M/s 4.45M/s 4.44M/s 4.43M/s 4.63M/s 16KiB 4.35M/s 4.26M/s 4.27M/s 4.27M/s 4.27M/s 4.27M/s 4.2M/s 4.26M/s 4.26M/s 4.26M/s tmp179:~ #
Philippe