root@netboot:~# (cd /sys/block/mmcblk0/device/ ; for i in * ; do if [ -f $i ] ; then echo -n "$i: " ; cat $i ; fi ; done) cid: 02544d534431364760dcbf359a00a800 csd: 400e00325b590000777f7f800a400000 date: 08/2010 fwrev: 0x0 hwrev: 0x6 manfid: 0x000002 name: SD16G oemid: 0x544d scr: 02b5800026027102 serial: 0xdcbf359a type: SD uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SD16G MODALIAS=mmc:block
root@netboot:~# ~/flashbench/flashbench -a /dev/mmcblk0 --blocksize=1024 align 536870912 pre 838µs on 1.12ms post 960µs diff 222µs align 268435456 pre 859µs on 1.09ms post 955µs diff 186µs align 134217728 pre 860µs on 1.1ms post 957µs diff 196µs align 67108864 pre 861µs on 1.11ms post 957µs diff 203µs align 33554432 pre 860µs on 1.11ms post 960µs diff 197µs align 16777216 pre 861µs on 1.11ms post 953µs diff 203µs align 8388608 pre 859µs on 1.11ms post 961µs diff 198µs align 4194304 pre 863µs on 1.1ms post 925µs diff 211µs align 2097152 pre 862µs on 1.11ms post 965µs diff 199µs align 1048576 pre 954µs on 978µs post 970µs diff 15.8µs align 524288 pre 951µs on 977µs post 973µs diff 14.8µs align 262144 pre 947µs on 977µs post 967µs diff 19.8µs align 131072 pre 947µs on 983µs post 969µs diff 25.5µs align 65536 pre 951µs on 981µs post 956µs diff 26.9µs align 32768 pre 948µs on 977µs post 963µs diff 21.6µs align 16384 pre 950µs on 978µs post 950µs diff 27.7µs align 8192 pre 963µs on 960µs post 963µs diff -3106ns align 4096 pre 962µs on 969µs post 956µs diff 10.1µs align 2048 pre 963µs on 953µs post 951µs diff -3893ns
From which I guess 2M erase block size. Not sure how to interpret the
last 4 rows.
Only 1 open allocation unit by the look of the following :-(
root@netboot:~# ~/flashbench/flashbench --open-au --open-au-nr=1 --erasesize=$[2 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/mmcblk0 2MiB 3.68M/s 1MiB 3.16M/s 512KiB 3.06M/s 256KiB 3.33M/s root@netboot:~# ~/flashbench/flashbench --open-au --open-au-nr=2 --erasesize=$[2 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/mmcblk0 2MiB 3.09M/s 1MiB 2.01M/s 512KiB 1.43M/s 256KiB 618K/s
root@netboot:~# ~/flashbench/flashbench -f /dev/mmcblk04MiB 2.51M/s 2.46M/s 3.73M/s 3.72M/s 3.72M/s 3.72M/s 2MiB 3.7M/s 2.46M/s 3.73M/s 3.73M/s 3.72M/s 3.72M/s 1MiB 3.7M/s 2.46M/s 3.73M/s 3.74M/s 3.72M/s 3.72M/s 512KiB 3.7M/s 2.45M/s 3.72M/s 3.7M/s 3.73M/s 3.73M/s 256KiB 3.71M/s 2.63M/s 3.72M/s 3.73M/s 3.72M/s 3.72M/s 128KiB 3.71M/s 2.82M/s 3.73M/s 3.72M/s 3.72M/s 3.72M/s 64KiB 3.71M/s 3.01M/s 3.72M/s 3.72M/s 3.72M/s 3.72M/s 32KiB 3.58M/s 2.73M/s 3.57M/s 3.57M/s 3.58M/s 3.57M/s 16KiB 2.95M/s 2.25M/s 2.94M/s 2.95M/s 2.94M/s 2.95M/s
The --scatter-order=<n> --scatter-span=<m> arguments are not really documented, so I didn't know how I should be using them, so I didn't. There are some strange outliers on the plot, most of which seem to end up consistently in the same place.
This card has had an HD image file copied over it (with dd) prior to any of these results being generated.
Thank you for the report!
On Sunday 20 March 2011 13:36:24 Tim Small wrote:
root@netboot:~# (cd /sys/block/mmcblk0/device/ ; for i in * ; do if [ -f $i ] ; then echo -n "$i: " ; cat $i ; fi ; done) cid: 02544d534431364760dcbf359a00a800 csd: 400e00325b590000777f7f800a400000 date: 08/2010 fwrev: 0x0 hwrev: 0x6 manfid: 0x000002 name: SD16G oemid: 0x544d scr: 02b5800026027102 serial: 0xdcbf359a type: SD uevent: DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SD16G MODALIAS=mmc:block
This looks liek typical Kingston cards, I believe Toshiba is actually behind the controllers.
root@netboot:~# ~/flashbench/flashbench -a /dev/mmcblk0 --blocksize=1024 align 536870912 pre 838µs on 1.12ms post 960µs diff 222µs align 268435456 pre 859µs on 1.09ms post 955µs diff 186µs align 134217728 pre 860µs on 1.1ms post 957µs diff 196µs align 67108864 pre 861µs on 1.11ms post 957µs diff 203µs align 33554432 pre 860µs on 1.11ms post 960µs diff 197µs align 16777216 pre 861µs on 1.11ms post 953µs diff 203µs align 8388608 pre 859µs on 1.11ms post 961µs diff 198µs align 4194304 pre 863µs on 1.1ms post 925µs diff 211µs align 2097152 pre 862µs on 1.11ms post 965µs diff 199µs align 1048576 pre 954µs on 978µs post 970µs diff 15.8µs align 524288 pre 951µs on 977µs post 973µs diff 14.8µs align 262144 pre 947µs on 977µs post 967µs diff 19.8µs align 131072 pre 947µs on 983µs post 969µs diff 25.5µs align 65536 pre 951µs on 981µs post 956µs diff 26.9µs align 32768 pre 948µs on 977µs post 963µs diff 21.6µs align 16384 pre 950µs on 978µs post 950µs diff 27.7µs align 8192 pre 963µs on 960µs post 963µs diff -3106ns align 4096 pre 962µs on 969µs post 956µs diff 10.1µs align 2048 pre 963µs on 953µs post 951µs diff -3893ns
From which I guess 2M erase block size.
Right.
Not sure how to interpret the last 4 rows.
The numbers in the last 3 rows are below the measurement accuracy, I'd interpret them as 'close to zero'.
Only 1 open allocation unit by the look of the following :-(
root@netboot:~# ~/flashbench/flashbench --open-au --open-au-nr=1 --erasesize=$[2 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/mmcblk0 2MiB 3.68M/s 1MiB 3.16M/s 512KiB 3.06M/s 256KiB 3.33M/s root@netboot:~# ~/flashbench/flashbench --open-au --open-au-nr=2 --erasesize=$[2 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/mmcblk0 2MiB 3.09M/s 1MiB 2.01M/s 512KiB 1.43M/s 256KiB 618K/s
Right, that's normal for this controller brand. You did not test the '--random' case, but I would guess that even with '--open-au-nr=1 --random', the performance is really bad.
root@netboot:~# ~/flashbench/flashbench -f /dev/mmcblk0 4MiB 2.51M/s 2.46M/s 3.73M/s 3.72M/s 3.72M/s 3.72M/s 2MiB 3.7M/s 2.46M/s 3.73M/s 3.73M/s 3.72M/s 3.72M/s 1MiB 3.7M/s 2.46M/s 3.73M/s 3.74M/s 3.72M/s 3.72M/s 512KiB 3.7M/s 2.45M/s 3.72M/s 3.7M/s 3.73M/s 3.73M/s 256KiB 3.71M/s 2.63M/s 3.72M/s 3.73M/s 3.72M/s 3.72M/s 128KiB 3.71M/s 2.82M/s 3.73M/s 3.72M/s 3.72M/s 3.72M/s 64KiB 3.71M/s 3.01M/s 3.72M/s 3.72M/s 3.72M/s 3.72M/s 32KiB 3.58M/s 2.73M/s 3.57M/s 3.57M/s 3.58M/s 3.57M/s 16KiB 2.95M/s 2.25M/s 2.94M/s 2.95M/s 2.94M/s 2.95M/s
The second one here is different from the others, meaning that only the area between 4 and 8 MB at the start is optimized for FAT. If you rerun this test with --random --erasesize=$[2 * 1024 * 1024], you will find that the third and fourth column are fast with smaller blocks, while the others get really slow.
The --scatter-order=<n> --scatter-span=<m> arguments are not really documented, so I didn't know how I should be using them, so I didn't. There are some strange outliers on the plot, most of which seem to end up consistently in the same place.
Yes, I should document them. --scatter-order defines the area over which the scatter graph is taken, it will use 'blocksize * 2 ^ {order}' bytes at the start of the card. --scatter-span tells it to read multiple blocks at once: this is mainly a way to detect the block sizes if the -a test gives no conclusive result.
I've added the card to the flashcardsurvey wiki page now. I've seen that dane-elec card are being advertized as fast ones, this one is clearly not. The 'class 4' rating seems to be not true, and the GC algorithm means it's only good for FAT32, don't try to format this as ext3.
Arnd
flashbench-results@lists.linaro.org