$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=$[4 * 1024] align 8589934592 pre 4.43ms on 4.48ms post 3.9ms diff 320µs align 4294967296 pre 4.56ms on 4.62ms post 4.01ms diff 332µs align 2147483648 pre 4.21ms on 4.45ms post 3.87ms diff 405µs align 1073741824 pre 4.56ms on 4.59ms post 3.97ms diff 327µs align 536870912 pre 4.54ms on 4.5ms post 3.86ms diff 303µs align 268435456 pre 4.49ms on 4.56ms post 3.95ms diff 333µs align 134217728 pre 4.17ms on 4.48ms post 3.87ms diff 459µs align 67108864 pre 4.58ms on 4.61ms post 3.93ms diff 357µs align 33554432 pre 4.02ms on 4.22ms post 3.5ms diff 464µs align 16777216 pre 4.16ms on 4.22ms post 3.55ms diff 367µs align 8388608 pre 4.25ms on 4.2ms post 3.47ms diff 345µs align 4194304 pre 4.16ms on 4.25ms post 3.51ms diff 411µs align 2097152 pre 4.27ms on 4.24ms post 3.54ms diff 340µs align 1048576 pre 4.21ms on 4.32ms post 3.56ms diff 430µs align 524288 pre 4.18ms on 4.26ms post 3.49ms diff 427µs align 262144 pre 3.54ms on 3.58ms post 3.56ms diff 32.1µs align 131072 pre 3.62ms on 3.61ms post 3.54ms diff 29.9µs align 65536 pre 3.44ms on 3.63ms post 3.53ms diff 146µs align 32768 pre 3.55ms on 3.57ms post 3.5ms diff 48µs align 16384 pre 3.44ms on 3.62ms post 3.59ms diff 102µs align 8192 pre 3.62ms on 3.57ms post 3.52ms diff 4.96µs
Erase Block size found to be 512KB which is kind of surprising because possibility of a 512KB erase block size is not there in your LWN article. Anyways moving on..
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au --random 512KiB 6.14M/s 256KiB 6.39M/s 128KiB 6.3M/s 64KiB 6.16M/s 32KiB 5.75M/s 16KiB 4.64M/s 8KiB 3.39M/s 4KiB 2.23M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au 512KiB 6.14M/s 256KiB 6.36M/s 128KiB 6.25M/s 64KiB 6.14M/s 32KiB 3.79M/s 16KiB 3.45M/s 8KiB 3.44M/s 4KiB 2.28M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=1 --random 512KiB 5.68M/s 256KiB 6.22M/s 128KiB 6.33M/s 64KiB 6.29M/s 32KiB 5.93M/s 16KiB 4.9M/s 8KiB 3.3M/s 4KiB 2.19M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=1 512KiB 6.06M/s 256KiB 6.4M/s 128KiB 6.34M/s 64KiB 6.35M/s 32KiB 4.05M/s 16KiB 4.25M/s 8KiB 5.18M/s 4KiB 3.92M/s
Got consistent numbers till open erase block = 17 but beyond that also numbers are not that bad as well.
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=17 --random 512KiB 5.95M/s 256KiB 5.14M/s 128KiB 4.64M/s 64KiB 5.83M/s 32KiB 5.76M/s 16KiB 4.64M/s 8KiB 2.92M/s 4KiB 2.23M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=17 512KiB 6.38M/s 256KiB 6.04M/s 128KiB 6.17M/s 64KiB 5.22M/s 32KiB 4.4M/s 16KiB 4.51M/s 8KiB 2.77M/s 4KiB 2.13M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=18 --random 512KiB 4.27M/s 256KiB 4.54M/s 128KiB 4.12M/s 64KiB 4.53M/s 32KiB 4.36M/s 16KiB 2.71M/s 8KiB 1.35M/s 4KiB 1.5M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=18 512KiB 6.34M/s 256KiB 5.22M/s 128KiB 5.37M/s 64KiB 4.88M/s 32KiB 5.16M/s 16KiB 3.79M/s 8KiB 3.05M/s 4KiB 2.14M/s
forgot to put: manfid = 0x000003 and, oemid = 0x5344
Regards, Amit Pundir
On Sun, Apr 24, 2011 at 6:52 PM, Amit Pundir pundiramit@gmail.com wrote:
$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=$[4 * 1024] align 8589934592 pre 4.43ms on 4.48ms post 3.9ms diff 320µs align 4294967296 pre 4.56ms on 4.62ms post 4.01ms diff 332µs align 2147483648 pre 4.21ms on 4.45ms post 3.87ms diff 405µs align 1073741824 pre 4.56ms on 4.59ms post 3.97ms diff 327µs align 536870912 pre 4.54ms on 4.5ms post 3.86ms diff 303µs align 268435456 pre 4.49ms on 4.56ms post 3.95ms diff 333µs align 134217728 pre 4.17ms on 4.48ms post 3.87ms diff 459µs align 67108864 pre 4.58ms on 4.61ms post 3.93ms diff 357µs align 33554432 pre 4.02ms on 4.22ms post 3.5ms diff 464µs align 16777216 pre 4.16ms on 4.22ms post 3.55ms diff 367µs align 8388608 pre 4.25ms on 4.2ms post 3.47ms diff 345µs align 4194304 pre 4.16ms on 4.25ms post 3.51ms diff 411µs align 2097152 pre 4.27ms on 4.24ms post 3.54ms diff 340µs align 1048576 pre 4.21ms on 4.32ms post 3.56ms diff 430µs align 524288 pre 4.18ms on 4.26ms post 3.49ms diff 427µs align 262144 pre 3.54ms on 3.58ms post 3.56ms diff 32.1µs align 131072 pre 3.62ms on 3.61ms post 3.54ms diff 29.9µs align 65536 pre 3.44ms on 3.63ms post 3.53ms diff 146µs align 32768 pre 3.55ms on 3.57ms post 3.5ms diff 48µs align 16384 pre 3.44ms on 3.62ms post 3.59ms diff 102µs align 8192 pre 3.62ms on 3.57ms post 3.52ms diff 4.96µs
Erase Block size found to be 512KB which is kind of surprising because possibility of a 512KB erase block size is not there in your LWN article. Anyways moving on..
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au --random 512KiB 6.14M/s 256KiB 6.39M/s 128KiB 6.3M/s 64KiB 6.16M/s 32KiB 5.75M/s 16KiB 4.64M/s 8KiB 3.39M/s 4KiB 2.23M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au 512KiB 6.14M/s 256KiB 6.36M/s 128KiB 6.25M/s 64KiB 6.14M/s 32KiB 3.79M/s 16KiB 3.45M/s 8KiB 3.44M/s 4KiB 2.28M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=1 --random 512KiB 5.68M/s 256KiB 6.22M/s 128KiB 6.33M/s 64KiB 6.29M/s 32KiB 5.93M/s 16KiB 4.9M/s 8KiB 3.3M/s 4KiB 2.19M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=1 512KiB 6.06M/s 256KiB 6.4M/s 128KiB 6.34M/s 64KiB 6.35M/s 32KiB 4.05M/s 16KiB 4.25M/s 8KiB 5.18M/s 4KiB 3.92M/s
Got consistent numbers till open erase block = 17 but beyond that also numbers are not that bad as well.
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=17 --random 512KiB 5.95M/s 256KiB 5.14M/s 128KiB 4.64M/s 64KiB 5.83M/s 32KiB 5.76M/s 16KiB 4.64M/s 8KiB 2.92M/s 4KiB 2.23M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=17 512KiB 6.38M/s 256KiB 6.04M/s 128KiB 6.17M/s 64KiB 5.22M/s 32KiB 4.4M/s 16KiB 4.51M/s 8KiB 2.77M/s 4KiB 2.13M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=18 --random 512KiB 4.27M/s 256KiB 4.54M/s 128KiB 4.12M/s 64KiB 4.53M/s 32KiB 4.36M/s 16KiB 2.71M/s 8KiB 1.35M/s 4KiB 1.5M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=18 512KiB 6.34M/s 256KiB 5.22M/s 128KiB 5.37M/s 64KiB 4.88M/s 32KiB 5.16M/s 16KiB 3.79M/s 8KiB 3.05M/s 4KiB 2.14M/s
On Sunday 24 April 2011 15:22:00 Amit Pundir wrote:
$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=$[4 * 1024] align 8589934592 pre 4.43ms on 4.48ms post 3.9ms diff 320µs align 4294967296 pre 4.56ms on 4.62ms post 4.01ms diff 332µs align 2147483648 pre 4.21ms on 4.45ms post 3.87ms diff 405µs align 1073741824 pre 4.56ms on 4.59ms post 3.97ms diff 327µs align 536870912 pre 4.54ms on 4.5ms post 3.86ms diff 303µs align 268435456 pre 4.49ms on 4.56ms post 3.95ms diff 333µs align 134217728 pre 4.17ms on 4.48ms post 3.87ms diff 459µs align 67108864 pre 4.58ms on 4.61ms post 3.93ms diff 357µs align 33554432 pre 4.02ms on 4.22ms post 3.5ms diff 464µs align 16777216 pre 4.16ms on 4.22ms post 3.55ms diff 367µs align 8388608 pre 4.25ms on 4.2ms post 3.47ms diff 345µs align 4194304 pre 4.16ms on 4.25ms post 3.51ms diff 411µs align 2097152 pre 4.27ms on 4.24ms post 3.54ms diff 340µs align 1048576 pre 4.21ms on 4.32ms post 3.56ms diff 430µs align 524288 pre 4.18ms on 4.26ms post 3.49ms diff 427µs align 262144 pre 3.54ms on 3.58ms post 3.56ms diff 32.1µs align 131072 pre 3.62ms on 3.61ms post 3.54ms diff 29.9µs align 65536 pre 3.44ms on 3.63ms post 3.53ms diff 146µs align 32768 pre 3.55ms on 3.57ms post 3.5ms diff 48µs align 16384 pre 3.44ms on 3.62ms post 3.59ms diff 102µs align 8192 pre 3.62ms on 3.57ms post 3.52ms diff 4.96µs
Erase Block size found to be 512KB which is kind of surprising because possibility of a 512KB erase block size is not there in your LWN article. Anyways moving on..
I agree it's surprising. Can you run some more tests on this one? Especially for a card of this size, I would not expect anything smaller than 2 MB, and 8 MB would be even more likely.
Fortunately, this card can do random access, so I'd suggest you start with
./flashbench -O --erasesize=$[8 * 1024 * 1024] --blocksize=4096 \ /dev/mmcblk0 --open-au-nr=1 --random
and work you way up the the open AU count until you hit the cutoff. When you have that for 8 MB, you can try smaller erase sizes. Assuming your card can have 3 * 8 MB open, it would be able to do 6 * 4 MB if the actual erasesize is 4 MB, or only 3 * 4 MB if the actual erasesize is 8 MB, but in that case the performance for 3 * 4 MB should be lower than for 3 * 8 MB because it has to do more garbage collection.
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=17 512KiB 6.38M/s 256KiB 6.04M/s 128KiB 6.17M/s 64KiB 5.22M/s 32KiB 4.4M/s 16KiB 4.51M/s 8KiB 2.77M/s 4KiB 2.13M/s
$ sudo ./flashbench -O --erasesize=$[512 * 1024] --blocksize=$[4 * 1024] /dev/mmcblk0 --open-au-nr=18 --random 512KiB 4.27M/s 256KiB 4.54M/s 128KiB 4.12M/s 64KiB 4.53M/s 32KiB 4.36M/s 16KiB 2.71M/s 8KiB 1.35M/s 4KiB 1.5M/s
What might be happening here is that multiple 512KB segments that you try actually fall into the same erase block, because flashbench always skips 5 segments, i.e. 2.5 MB.
Arnd
On Sunday 24 April 2011 16:41:53 Arnd Bergmann wrote:
and work you way up the the open AU count until you hit the cutoff. When you have that for 8 MB, you can try smaller erase sizes. Assuming your card can have 3 * 8 MB open, it would be able to do 6 * 4 MB if the actual erasesize is 4 MB, or only 3 * 4 MB if the actual erasesize is 8 MB, but in that case the performance for 3 * 4 MB should be lower than for 3 * 8 MB because it has to do more garbage collection.
One more idea: The size of the card is actually a multiple of 3*512KB, which indicates that it is probably not using a larger power of two erase block size, but indeed uses 1.5 MB erase blocks.
You can try passing --erasesize=$[3 * 512 * 1024] --blocksize=3072 to test with this and possibly get more meaningful results.
Arnd
flashbench-results@lists.linaro.org