Sorry if my previous few emails to the list came through with a www at the beginning of my domain. There were some DNS issues, they have been fixed.
This was an interesting card. I'm not exactly sure what to make of the results.
# BeagleBoard-xM is my only home computer with a built-in MMC device:
root@192:~/flashbench# head /sys/block/mmcblk0/device/* 2>/dev/null | grep -v ^$ ==> /sys/block/mmcblk0/device/block <==
==> /sys/block/mmcblk0/device/cid <==
1b534d30303030301010a306a500bb51
==> /sys/block/mmcblk0/device/csd <==
400e00325b5900001d9b7f800a40003b
==> /sys/block/mmcblk0/device/date <==
11/2011
==> /sys/block/mmcblk0/device/driver <==
==> /sys/block/mmcblk0/device/erase_size <==
512
==> /sys/block/mmcblk0/device/fwrev <==
0x0
==> /sys/block/mmcblk0/device/hwrev <==
0x1
==> /sys/block/mmcblk0/device/manfid <==
0x00001b
==> /sys/block/mmcblk0/device/name <==
00000
==> /sys/block/mmcblk0/device/oemid <==
0x534d
==> /sys/block/mmcblk0/device/power <==
==> /sys/block/mmcblk0/device/preferred_erase_size <==
4194304
==> /sys/block/mmcblk0/device/scr <==
0235800000000000
==> /sys/block/mmcblk0/device/serial <==
0x10a306a5
==> /sys/block/mmcblk0/device/subsystem <==
==> /sys/block/mmcblk0/device/type <==
SD
==> /sys/block/mmcblk0/device/uevent <==
DRIVER=mmcblk
MMC_TYPE=SD
MMC_NAME=00000
MODALIAS=mmc:block
# All further tests done using Transcend USB2.0 reader on my desktop
andrew@bigbox:~/flashbench$ sudo sfdisk -uS -l /dev/sdc
Disk /dev/sdc: 1895 cylinders, 128 heads, 32 sectors/track Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System /dev/sdc1 * 8192 7761919 7753728 c W95 FAT32 (LBA) /dev/sdc2 0 - 0 0 Empty /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty
andrew@bigbox:~/flashbench$ sudo ./flashbench -a /dev/sdc --blocksize=1024 --count=100 align 1073741824 pre 1.3ms on 1.72ms post 1.41ms diff 366µs align 536870912 pre 1.31ms on 1.69ms post 1.41ms diff 336µs align 268435456 pre 1.29ms on 1.68ms post 1.42ms diff 325µs align 134217728 pre 1.19ms on 1.54ms post 1.33ms diff 274µs align 67108864 pre 1.19ms on 1.55ms post 1.32ms diff 292µs align 33554432 pre 1.18ms on 1.54ms post 1.32ms diff 286µs align 16777216 pre 1.19ms on 1.57ms post 1.32ms diff 312µs align 8388608 pre 1.21ms on 1.62ms post 1.37ms diff 331µs align 4194304 pre 1.16ms on 1.5ms post 1.31ms diff 268µs align 2097152 pre 1.18ms on 1.54ms post 1.35ms diff 277µs align 1048576 pre 1.16ms on 1.54ms post 1.32ms diff 301µs align 524288 pre 1.19ms on 1.36ms post 1.33ms diff 97µs align 262144 pre 1.19ms on 1.32ms post 1.33ms diff 58.9µs align 131072 pre 1.18ms on 1.39ms post 1.37ms diff 109µs align 65536 pre 1.2ms on 1.34ms post 1.33ms diff 78.7µs align 32768 pre 1.19ms on 1.35ms post 1.33ms diff 88.7µs align 16384 pre 1.17ms on 1.31ms post 1.3ms diff 76.4µs align 8192 pre 1.18ms on 1.3ms post 1.3ms diff 60.5µs align 4096 pre 1.24ms on 1.24ms post 1.22ms diff 6.35µs align 2048 pre 1.28ms on 1.28ms post 1.27ms diff 7.22µs
# 1MiB erase block? # 8KiB page size
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[1*1024*1024] --blocksize=$[4*1024] --open-au-nr=1 1MiB 3.08M/s 512KiB 1.88M/s 256KiB 1.91M/s 128KiB 1.98M/s 64KiB 1.88M/s 32KiB 1.95M/s 16KiB 1.93M/s 8KiB 1.94M/s 4KiB 1.72M/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=1 2MiB 4.44M/s 1MiB 4.14M/s 512KiB 4.43M/s 256KiB 4.32M/s 128KiB 4.42M/s 64KiB 4.16M/s 32KiB 4.42M/s 16KiB 4.36M/s 8KiB 4.35M/s 4KiB 3.64M/s
# Makes me think 2MiB erase block is accurate, bumping to --erasesize=$[4*1024*1024] has no effect.
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=2 2MiB 3.99M/s 1MiB 4.34M/s 512KiB 4.23M/s 256KiB 4.25M/s 128KiB 3.93M/s 64KiB 3.78M/s 32KiB 3.31M/s 16KiB 2.14M/s 8KiB 2.11M/s 4KiB 995K/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=3 2MiB 3.55M/s 1MiB 2.26M/s 512KiB 2.04M/s 256KiB 1.29M/s 128KiB 247K/s 64KiB 1.04M/s 32KiB 955K/s 16KiB 2.04M/s 8KiB 1.69M/s 4KiB 602K/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=4 2MiB 3.8M/s 1MiB 2.3M/s 512KiB 894K/s 256KiB 447K/s 128KiB 221K/s 64KiB 112K/s 32KiB 205K/s 16KiB 1.27M/s 8KiB 1.15M/s 4KiB 652K/s
# 1 open-au is good, 2 open-au is OK, 3 open-au is falling off fast. # In 3 and 4 open-au, I'm not sure why the slowdown at 32KiB and then the speed-up at 16KiB. Caching in the controller?
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --random --open-au-nr=1 2MiB 7.63M/s 1MiB 2.36M/s 512KiB 2.09M/s 256KiB 737K/s 128KiB 396K/s 64KiB 189K/s 32KiB 126K/s 16KiB 1.23M/s 8KiB 1.28M/s 4KiB 776K/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$*1024*1024] --blocksize=$[4*1024] --random --open-au-nr=2 2MiB 3.82M/s 1MiB 2.36M/s 512KiB 2.13M/s 256KiB 666K/s 128KiB 399K/s 64KiB 188K/s 32KiB 132K/s 16KiB 2.45M/s 8KiB 2.12M/s 4KiB 869K/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --random --open-au-nr=3 2MiB 4.11M/s 1MiB 2.19M/s 512KiB 1.59M/s 256KiB 605K/s 128KiB 288K/s 64KiB 158K/s 32KiB 121K/s 16KiB 1.99M/s 8KiB 1.12M/s 4KiB 708K/s
On Sunday 19 February 2012, Andrew Bradford wrote:
This was an interesting card. I'm not exactly sure what to make of the results.
# BeagleBoard-xM is my only home computer with a built-in MMC device: Device Boot Start End #sectors Id System /dev/sdc1 * 8192 7761919 7753728 c W95 FAT32 (LBA)
factor $[(7761919 + 1) / 2] 3880960: 2 2 2 2 2 2 2 2 2 2 2 5 379
The size is 1895*2MB, so the erase block size is probably neither 4MB or larger nor any multiple of 3.
andrew@bigbox:~/flashbench$ sudo ./flashbench -a /dev/sdc --blocksize=1024 --count=100 align 1073741824 pre 1.3ms on 1.72ms post 1.41ms diff 366µs align 536870912 pre 1.31ms on 1.69ms post 1.41ms diff 336µs align 268435456 pre 1.29ms on 1.68ms post 1.42ms diff 325µs align 134217728 pre 1.19ms on 1.54ms post 1.33ms diff 274µs align 67108864 pre 1.19ms on 1.55ms post 1.32ms diff 292µs align 33554432 pre 1.18ms on 1.54ms post 1.32ms diff 286µs align 16777216 pre 1.19ms on 1.57ms post 1.32ms diff 312µs align 8388608 pre 1.21ms on 1.62ms post 1.37ms diff 331µs align 4194304 pre 1.16ms on 1.5ms post 1.31ms diff 268µs align 2097152 pre 1.18ms on 1.54ms post 1.35ms diff 277µs align 1048576 pre 1.16ms on 1.54ms post 1.32ms diff 301µs align 524288 pre 1.19ms on 1.36ms post 1.33ms diff 97µs align 262144 pre 1.19ms on 1.32ms post 1.33ms diff 58.9µs align 131072 pre 1.18ms on 1.39ms post 1.37ms diff 109µs align 65536 pre 1.2ms on 1.34ms post 1.33ms diff 78.7µs align 32768 pre 1.19ms on 1.35ms post 1.33ms diff 88.7µs align 16384 pre 1.17ms on 1.31ms post 1.3ms diff 76.4µs align 8192 pre 1.18ms on 1.3ms post 1.3ms diff 60.5µs align 4096 pre 1.24ms on 1.24ms post 1.22ms diff 6.35µs align 2048 pre 1.28ms on 1.28ms post 1.27ms diff 7.22µs
# 1MiB erase block? # 8KiB page size
I don't think that 1MB can be right here, it seems much too small for a card made in late 2011. Better to try other erase sizes as well to see what makes sense.
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[1*1024*1024] --blocksize=$[4*1024] --open-au-nr=1 1MiB 3.08M/s 512KiB 1.88M/s 256KiB 1.91M/s 128KiB 1.98M/s 64KiB 1.88M/s 32KiB 1.95M/s 16KiB 1.93M/s 8KiB 1.94M/s 4KiB 1.72M/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=1 2MiB 4.44M/s 1MiB 4.14M/s 512KiB 4.43M/s 256KiB 4.32M/s 128KiB 4.42M/s 64KiB 4.16M/s 32KiB 4.42M/s 16KiB 4.36M/s 8KiB 4.35M/s 4KiB 3.64M/s
# Makes me think 2MiB erase block is accurate, bumping to --erasesize=$[4*1024*1024] has no effect.
Right, makes sense
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=2 2MiB 3.99M/s 1MiB 4.34M/s 512KiB 4.23M/s 256KiB 4.25M/s 128KiB 3.93M/s 64KiB 3.78M/s 32KiB 3.31M/s 16KiB 2.14M/s 8KiB 2.11M/s 4KiB 995K/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=3 2MiB 3.55M/s 1MiB 2.26M/s 512KiB 2.04M/s 256KiB 1.29M/s 128KiB 247K/s 64KiB 1.04M/s 32KiB 955K/s 16KiB 2.04M/s 8KiB 1.69M/s 4KiB 602K/s
andrew@bigbox:~/flashbench$ sudo ./flashbench /dev/sdc --open-au --erasesize=$[2*1024*1024] --blocksize=$[4*1024] --open-au-nr=4 2MiB 3.8M/s 1MiB 2.3M/s 512KiB 894K/s 256KiB 447K/s 128KiB 221K/s 64KiB 112K/s 32KiB 205K/s 16KiB 1.27M/s 8KiB 1.15M/s 4KiB 652K/s
# 1 open-au is good, 2 open-au is OK, 3 open-au is falling off fast. # In 3 and 4 open-au, I'm not sure why the slowdown at 32KiB and then the speed-up at 16KiB. Caching in the controller?
Yes, very likely.
Arnd
flashbench-results@lists.linaro.org