## Somewhat underwhelming for a SanDisk card.
andrew@brick:~/git/flashbench$ head /sys/block/mmcblk0/device/* 2>/dev/null | grep -v ^$ ==> /sys/block/mmcblk0/device/block <== ==> /sys/block/mmcblk0/device/cid <== 035344534430384780a11ce23a00c400 ==> /sys/block/mmcblk0/device/csd <== 400e00325b5900003b377f800a404000 ==> /sys/block/mmcblk0/device/date <== 04/2012 ==> /sys/block/mmcblk0/device/driver <== ==> /sys/block/mmcblk0/device/erase_size <== 512 ==> /sys/block/mmcblk0/device/fwrev <== 0x0 ==> /sys/block/mmcblk0/device/hwrev <== 0x8 ==> /sys/block/mmcblk0/device/manfid <== 0x000003 ==> /sys/block/mmcblk0/device/name <== SD08G ==> /sys/block/mmcblk0/device/oemid <== 0x5344 ==> /sys/block/mmcblk0/device/power <== ==> /sys/block/mmcblk0/device/preferred_erase_size <== 4194304 ==> /sys/block/mmcblk0/device/scr <== 0235800100000000 ==> /sys/block/mmcblk0/device/serial <== 0xa11ce23a ==> /sys/block/mmcblk0/device/subsystem <== ==> /sys/block/mmcblk0/device/type <== SD ==> /sys/block/mmcblk0/device/uevent <== DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SD08G MODALIAS=mmc:block
andrew@brick:~/git/flashbench$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=1024 align 2147483648 pre 780µs on 885µs post 729µs diff 131µs align 1073741824 pre 788µs on 880µs post 729µs diff 122µs align 536870912 pre 793µs on 948µs post 728µs diff 188µs align 268435456 pre 785µs on 883µs post 726µs diff 127µs align 134217728 pre 787µs on 877µs post 728µs diff 120µs align 67108864 pre 774µs on 879µs post 727µs diff 129µs align 33554432 pre 788µs on 942µs post 725µs diff 185µs align 16777216 pre 787µs on 874µs post 724µs diff 118µs align 8388608 pre 924µs on 1.06ms post 723µs diff 238µs align 4194304 pre 1.02ms on 1.23ms post 1.01ms diff 215µs align 2097152 pre 821µs on 839µs post 814µs diff 21.4µs align 1048576 pre 820µs on 840µs post 813µs diff 23.7µs align 524288 pre 820µs on 842µs post 819µs diff 22.5µs align 262144 pre 818µs on 838µs post 813µs diff 22.5µs align 131072 pre 825µs on 839µs post 818µs diff 17.6µs align 65536 pre 823µs on 841µs post 817µs diff 20.6µs align 32768 pre 817µs on 834µs post 811µs diff 20.1µs align 16384 pre 819µs on 835µs post 812µs diff 19.7µs align 8192 pre 810µs on 810µs post 808µs diff 800ns align 4096 pre 814µs on 814µs post 819µs diff -2600ns align 2048 pre 813µs on 807µs post 809µs diff -3652ns
## 4MiB erase block ## 16KiB pages
andrew@brick:~/git/flashbench$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=$[3*1024] align 1610612736 pre 912µs on 987µs post 898µs diff 82.2µs align 805306368 pre 909µs on 986µs post 894µs diff 84.7µs align 402653184 pre 906µs on 1.04ms post 893µs diff 139µs align 201326592 pre 906µs on 986µs post 895µs diff 85.2µs align 100663296 pre 908µs on 984µs post 895µs diff 82.5µs align 50331648 pre 905µs on 982µs post 895µs diff 82.1µs align 25165824 pre 904µs on 1.03ms post 889µs diff 137µs align 12582912 pre 872µs on 977µs post 895µs diff 93.5µs align 6291456 pre 1.07ms on 1.09ms post 1.07ms diff 17.7µs align 3145728 pre 978µs on 1ms post 981µs diff 22µs align 1572864 pre 980µs on 1.01ms post 989µs diff 27.2µs align 786432 pre 979µs on 1ms post 981µs diff 20.7µs align 393216 pre 978µs on 998µs post 982µs diff 18.3µs align 196608 pre 975µs on 1e+03µ post 986µs diff 19.1µs align 98304 pre 981µs on 997µs post 982µs diff 15.7µs align 49152 pre 974µs on 991µs post 978µs diff 15.6µs align 24576 pre 983µs on 982µs post 977µs diff 2.16µs align 12288 pre 976µs on 978µs post 979µs diff 92ns align 6144 pre 972µs on 985µs post 976µs diff 10.5µs
## 12 MiB might be significant, but probably not
andrew@brick:~/git/flashbench$ sudo fdisk -l /dev/mmcblk0 | grep Disk Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes Disk identifier: 0x00000000 andrew@brick:~/git/flashbench$ factor $[7948206080/1024] 7761920: 2 2 2 2 2 2 2 2 2 2 2 2 5 379
## So 12 MiB most likely isn't significant, no factor of 3
andrew@brick:~/git/flashbench$ sudo ./flashbench /dev/mmcblk0 -f --erasesize=$[4*1024*1024] 4MiB 7.94M/s 3.35M/s 7.97M/s 8.02M/s 8.02M/s 8.03M/s 2MiB 8.03M/s 3.49M/s 7.91M/s 8.03M/s 8.01M/s 8.03M/s 1MiB 8.02M/s 3.48M/s 7.92M/s 8.02M/s 8.02M/s 8.03M/s 512KiB 8.01M/s 3.21M/s 7.97M/s 8.03M/s 8M/s 8.04M/s 256KiB 8M/s 3.32M/s 7.96M/s 7.98M/s 7.99M/s 8.02M/s 128KiB 7.98M/s 3.25M/s 7.86M/s 7.95M/s 7.94M/s 7.96M/s 64KiB 7.88M/s 3.44M/s 7.81M/s 7.88M/s 7.9M/s 7.91M/s 32KiB 7.15M/s 2.98M/s 7.18M/s 7.2M/s 7.16M/s 7.18M/s 16KiB 6.14M/s 2.3M/s 6.15M/s 6.2M/s 6.07M/s 6.1M/s
## Special fat area in 2nd erase block (4MiB to 8MiB)
andrew@brick:~/git/flashbench$ sudo ./flashbench /dev/mmcblk0 --open-au --blocksize=$[16*1024] --erasesize=$[4*1024*1024] --open-au-nr=1 4MiB 8.03M/s 2MiB 8.05M/s 1MiB 4.27M/s 512KiB 2.49M/s 256KiB 7.35M/s 128KiB 7.85M/s 64KiB 7.87M/s 32KiB 7.1M/s 16KiB 6.21M/s
## The drop in speed at 1MiB and 512kiB is consistent, across runs. But only with 1 open-au.
andrew@brick:~/git/flashbench$ sudo ./flashbench /dev/mmcblk0 --open-au --blocksize=$[16*1024] --erasesize=$[4*1024*1024] --open-au-nr=2 4MiB 8M/s 2MiB 7.98M/s 1MiB 7.99M/s 512KiB 7.98M/s 256KiB 7.97M/s 128KiB 7.92M/s 64KiB 7.84M/s 32KiB 7.03M/s 16KiB 5.99M/s
andrew@brick:~/git/flashbench$ sudo ./flashbench /dev/mmcblk0 --open-au --blocksize=$[16*1024] --erasesize=$[4*1024*1024] --open-au-nr=6 4MiB 8.04M/s 2MiB 8.01M/s 1MiB 8M/s 512KiB 7.99M/s 256KiB 7.98M/s 128KiB 7.93M/s 64KiB 7.82M/s 32KiB 7.07M/s 16KiB 6.08M/s
andrew@brick:~/git/flashbench$ sudo ./flashbench /dev/mmcblk0 --open-au --blocksize=$[16*1024] --erasesize=$[4*1024*1024] --open-au-nr=7 4MiB 8.02M/s 2MiB 5.22M/s 1MiB 2.39M/s 512KiB 1.18M/s 256KiB 597K/s 128KiB 4.54M/s 64KiB 7.8M/s 32KiB 7.06M/s 16KiB 5.94M/s
## 6 linear open-au.
andrew@brick:~/git/flashbench$ sudo ./flashbench /dev/mmcblk0 --open-au --blocksize=$[16*1024] --erasesize=$[4*1024*1024] --random --open-au-nr=1 4MiB 8.05M/s 2MiB 3.78M/s 1MiB 2.25M/s 512KiB 1.07M/s 256KiB 539K/s 128KiB 428K/s 64KiB 402K/s ^C
## Rather poor random.
-Andrew