Label:
MB-SSBGB MBSSBGVEQAFA-XF D-HJIA39HE 244 MADE IN KOREA DESIGNED BY SAMSUNG
==> /sys/block/mmcblk0/device/block <== head: error reading '/sys/block/mmcblk0/device/block': Is a directory
==> /sys/block/mmcblk0/device/cid <== 1b534d3030303030107085d85000cb00
==> /sys/block/mmcblk0/device/csd <== 400e00325b590000ea3d7f800a404000
==> /sys/block/mmcblk0/device/date <== 11/2012
==> /sys/block/mmcblk0/device/driver <== head: error reading '/sys/block/mmcblk0/device/driver': Is a directory
==> /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 <== head: error reading '/sys/block/mmcblk0/device/power': Is a directory
==> /sys/block/mmcblk0/device/preferred_erase_size <== 4194304
==> /sys/block/mmcblk0/device/scr <== 02b5800200000000
==> /sys/block/mmcblk0/device/serial <== 0x7085d850
==> /sys/block/mmcblk0/device/subsystem <== head: error reading '/sys/block/mmcblk0/device/subsystem': Is a directory
==> /sys/block/mmcblk0/device/type <== SD
==> /sys/block/mmcblk0/device/uevent <== DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=00000 MODALIAS=mmc:block
$ sudo fdisk -l /dev/mmcblk0 Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes 255 heads, 63 sectors/track, 3822 cylinders, total 61405184 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Device Boot Start End Blocks Id System /dev/mmcblk0p1 8192 61405183 30698496 c W95 FAT32 (LBA)
$ factor $[31439454208 / 1024] 30702592: 2 2 2 2 2 2 2 2 2 2 29983
=> 1 MB alignment!
$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=1024 --count=32 align 3221225472 pre 324µs on 439µs post 324µs diff 115µs align 2147483648 pre 322µs on 325µs post 321µs diff 3.61µs align 1610612736 pre 321µs on 449µs post 317µs diff 130µs align 1073741824 pre 324µs on 336µs post 326µs diff 11.5µs align 805306368 pre 318µs on 449µs post 321µs diff 129µs align 536870912 pre 323µs on 334µs post 324µs diff 10.8µs align 402653184 pre 316µs on 449µs post 322µs diff 130µs align 268435456 pre 318µs on 336µs post 318µs diff 17.8µs align 201326592 pre 323µs on 449µs post 327µs diff 124µs align 134217728 pre 326µs on 338µs post 322µs diff 13.8µs align 100663296 pre 314µs on 445µs post 323µs diff 126µs align 67108864 pre 324µs on 334µs post 324µs diff 9.46µs align 50331648 pre 321µs on 448µs post 321µs diff 127µs align 33554432 pre 314µs on 333µs post 311µs diff 19.9µs align 25165824 pre 314µs on 436µs post 325µs diff 116µs align 16777216 pre 305µs on 320µs post 302µs diff 16.3µs align 12582912 pre 322µs on 444µs post 315µs diff 126µs align 8388608 pre 314µs on 344µs post 318µs diff 28.5µs align 6291456 pre 319µs on 336µs post 316µs diff 18.7µs align 4194304 pre 316µs on 341µs post 315µs diff 25.3µs align 3145728 pre 321µs on 336µs post 322µs diff 15.2µs align 2097152 pre 318µs on 333µs post 315µs diff 16.3µs align 1572864 pre 321µs on 336µs post 320µs diff 15.3µs align 1048576 pre 315µs on 336µs post 318µs diff 19.7µs align 786432 pre 312µs on 335µs post 314µs diff 22µs align 524288 pre 313µs on 325µs post 314µs diff 11.5µs align 393216 pre 317µs on 340µs post 308µs diff 27.7µs align 262144 pre 312µs on 333µs post 317µs diff 18.4µs align 196608 pre 322µs on 343µs post 319µs diff 22.5µs align 131072 pre 314µs on 338µs post 320µs diff 21.6µs align 98304 pre 320µs on 329µs post 313µs diff 12.9µs align 65536 pre 318µs on 339µs post 321µs diff 19.6µs align 49152 pre 316µs on 344µs post 317µs diff 27.2µs align 32768 pre 315µs on 337µs post 307µs diff 25.3µs align 24576 pre 319µs on 313µs post 320µs diff -6037ns align 16384 pre 320µs on 340µs post 317µs diff 21.6µs align 12288 pre 324µs on 310µs post 310µs diff -6805ns align 8192 pre 312µs on 315µs post 322µs diff -1760ns align 6144 pre 318µs on 319µs post 321µs diff -153ns align 4096 pre 312µs on 311µs post 306µs diff 2.34µs align 3072 pre 315µs on 322µs post 320µs diff 3.93µs align 2048 pre 312µs on 320µs post 323µs diff 2.98µs
===> Suggests 12 MB erase blocks, 16 KB page size
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] 12MiB 12.6M/s 6MiB 13M/s 3MiB 13M/s 1.5MiB 13M/s 768KiB 13M/s 384KiB 13M/s 192KiB 13M/s 96KiB 12.1M/s 48KiB 12.1M/s 24KiB 6.89M/s 12KiB 5.8M/s
===> looks great so far
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] --random 12MiB 13M/s 6MiB 13M/s 3MiB 13.1M/s 1.5MiB 13M/s 768KiB 13M/s 384KiB 13M/s 192KiB 13M/s 96KiB 12.1M/s 48KiB 12.1M/s 24KiB 6.96M/s 12KiB 5.79M/s
===> ok, so we can continue with --random
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] --random --open-au-nr=6 12MiB 11.6M/s 6MiB 11.1M/s 3MiB 10.8M/s 1.5MiB 10.4M/s 768KiB 10.2M/s 384KiB 9.96M/s 192KiB 9.91M/s 96KiB 9.29M/s 48KiB 9.26M/s 24KiB 5.75M/s 12KiB 5.87M/s
===> unclear what this means
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] --random --open-au-nr=3 12MiB 11.5M/s 6MiB 11.3M/s 3MiB 11.4M/s 1.5MiB 11.3M/s 768KiB 10.8M/s 384KiB 10.5M/s 192KiB 10.1M/s 96KiB 9.32M/s 48KiB 9.35M/s 24KiB 5.93M/s 12KiB 5.87M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] --random --open-au-nr=10 12MiB 11.7M/s 6MiB 11.5M/s 3MiB 10.8M/s 1.5MiB 10.4M/s 768KiB 10.2M/s 384KiB 9.96M/s 192KiB 9.83M/s 96KiB 9.11M/s 48KiB 9.25M/s 24KiB 5.67M/s 12KiB 5.66M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] --random --open-au-nr=30 12MiB 11.6M/s 6MiB 11.2M/s 3MiB 10.7M/s 1.5MiB 10.5M/s 768KiB 10.8M/s 384KiB 11M/s 192KiB 10.9M/s 96KiB 8.65M/s 48KiB 9.67M/s 24KiB 5.5M/s 12KiB 5.35M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] --random --open-au-nr=31 12MiB 12.6M/s 6MiB 12.8M/s 3MiB 12.7M/s 1.5MiB 12.5M/s 768KiB 12.1M/s 384KiB 12M/s 192KiB 11.9M/s 96KiB 10.5M/s 48KiB 10.8M/s 24KiB 5.9M/s 12KiB 5.33M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096] --open-au-nr=33 12MiB 12.6M/s 6MiB 12.7M/s 3MiB 12.7M/s 1.5MiB 12.6M/s 768KiB 12.2M/s 384KiB 12.1M/s 192KiB 12M/s 96KiB 10.9M/s 48KiB 11.1M/s 24KiB 6.12M/s 12KiB 5.49M/s
===> this looks really great, though not helpful for trying to figure out what the card does inside ===> trying with a smaller erasesize
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[1024*1024] --blocksize=$[2048] 1MiB 11.8M/s 512KiB 12.5M/s 256KiB 12.5M/s 128KiB 12.2M/s 64KiB 11.6M/s 32KiB 10.3M/s 16KiB 7.72M/s 8KiB 5.86M/s 4KiB 3.59M/s 2KiB 1.86M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[1024*1024] --blocksize=$[2048] --open-au-nr=30 1MiB 10.1M/s 512KiB 10.9M/s 256KiB 9.67M/s 128KiB 8.84M/s 64KiB 6.59M/s 32KiB 5.26M/s 16KiB 3.2M/s 8KiB 2.34M/s 4KiB 1.23M/s 2KiB 600K/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random 256KiB 10M/s 128KiB 10.9M/s 64KiB 10.2M/s 32KiB 8.34M/s 16KiB 6.37M/s 8KiB 5.98M/s 4KiB 3.55M/s 2KiB 1.83M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=10 256KiB 10.1M/s 128KiB 11M/s 64KiB 11M/s 32KiB 9.07M/s 16KiB 5.58M/s 8KiB 5.73M/s 4KiB 3.59M/s 2KiB 1.8M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=20 256KiB 11.1M/s 128KiB 9.49M/s 64KiB 8.2M/s 32KiB 5.8M/s 16KiB 3.39M/s 8KiB 2.42M/s 4KiB 1.22M/s 2KiB 622K/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=15 256KiB 11.5M/s 128KiB 12M/s 64KiB 10.8M/s 32KiB 8.8M/s 16KiB 5.78M/s 8KiB 5.67M/s 4KiB 3.55M/s 2KiB 1.85M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=17 256KiB 11.3M/s 128KiB 11.1M/s 64KiB 10.1M/s 32KiB 10.4M/s 16KiB 6.22M/s 8KiB 5.87M/s 4KiB 3.65M/s 2KiB 1.85M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=18 256KiB 11.4M/s 128KiB 11.8M/s 64KiB 11.1M/s 32KiB 10.2M/s 16KiB 7.66M/s 8KiB 5.93M/s 4KiB 3.66M/s 2KiB 1.84M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=19 256KiB 10.9M/s 128KiB 10.4M/s 64KiB 8.33M/s 32KiB 5.93M/s 16KiB 4.04M/s 8KiB 2.42M/s 4KiB 1.23M/s 2KiB 624K/s
===> when writing 256 KB chunks, it is fast up to 18 segments
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[512*1024] --blocksize=$[2048] --random --open-au-nr=18 512KiB 11.1M/s 256KiB 11M/s 128KiB 10.5M/s 64KiB 9.48M/s 32KiB 7.29M/s 16KiB 5.5M/s 8KiB 5.96M/s 4KiB 3.26M/s 2KiB 1.83M/s arnd@klappe2:~/git/flashbench$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[512*1024] --blocksize=$[2048] --random --open-au-nr=19 512KiB 10.4M/s 256KiB 10M/s 128KiB 8.78M/s 64KiB 7.45M/s 32KiB 5.72M/s 16KiB 3.42M/s 8KiB 2.43M/s 4KiB 1.24M/s 2KiB 619K/s
===> same for 512 KB chunks, now let's see if we can find the erase size after all.
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[512*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[48*1024*1024] 512KiB 13.3M/s 256KiB 13.2M/s 128KiB 13.2M/s 64KiB 13.2M/s 32KiB 10.3M/s 16KiB 8.94M/s 8KiB 6.03M/s 4KiB 3.7M/s 2KiB 1.86M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[512*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[48*1024*1024 - 256*1024] 512KiB 8.55M/s 256KiB 12.1M/s 128KiB 10.7M/s 64KiB 9.88M/s 32KiB 6.93M/s 16KiB 5.59M/s 8KiB 3.48M/s 4KiB 1.86M/s 2KiB 846K/s
===> slow when crossing the boundary at 48MB, trying other boundaries
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocks ize=$[2048] --random --open-au-nr=18 --offset=$[32*1024*1024 - 128*1024] 256KiB 11.8M/s 128KiB 13.2M/s 64KiB 13.1M/s 32KiB 11.1M/s 16KiB 8.86M/s 8KiB 6.02M/s 4KiB 3.41M/s 2KiB 1.88M/s
===> fast on the 32 MB boundary
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[24*1024*1024 - 128*1024] 256KiB 10.6M/s 128KiB 10.4M/s 64KiB 9.37M/s 32KiB 6.54M/s 16KiB 4.81M/s 8KiB 3.48M/s 4KiB 1.61M/s 2KiB 913K/s
===> slow on the 24 MB boundary
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[36*1024*1024 - 128*1024] 256KiB 8.17M/s 128KiB 8.59M/s 64KiB 8.57M/s 32KiB 5.73M/s 16KiB 5.05M/s 8KiB 3.43M/s 4KiB 1.85M/s 2KiB 879K/s
===> slow on the 36 MB boundary
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[42*1024*1024 - 128*1024] 256KiB 11.6M/s 128KiB 13.1M/s 64KiB 13M/s 32KiB 11.2M/s 16KiB 8.25M/s 8KiB 5.98M/s 4KiB 3.67M/s 2KiB 1.87M/s
===> fast on the 42 MB boundary
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[72*1024*1024 - 128*1024] 256KiB 5.6M/s 128KiB 10.3M/s 64KiB 9.43M/s 32KiB 4.65M/s 16KiB 5.04M/s 8KiB 3.48M/s 4KiB 1.82M/s 2KiB 928K/s
===> slow on the 72 MB boundary
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[12*1024*1024*1024 - 128*1024] 256KiB 3.05M/s 128KiB 11M/s 64KiB 9.43M/s 32KiB 4.66M/s 16KiB 5.09M/s 8KiB 3.44M/s 4KiB 1.85M/s 2KiB 938K/s arnd@klappe2:~/git/flashbench$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[256*1024] --blocksize=$[2048] --random --open-au-nr=18 --offset=$[12*1024*1024*1024] 256KiB 12.1M/s 128KiB 13.2M/s 64KiB 13.2M/s 32KiB 11.4M/s 16KiB 8.93M/s 8KiB 4.45M/s 4KiB 3.67M/s 2KiB 1.9M/s
===> slow on the 12 GB boundary. apparently all 12 MB multiples are slow, confirming the 12 MB erase size
Verdict:
This card will be good with f2fs when formatted with 12 MB log sizes, and partitions aligned to 12 MB, which unfortunately, tools do not do by default.
It should also work reasonably with ext4 and btrfs, although the 12 MB erase blocks are large enough to be problematic for small file writes.
-------------------------------------------------------
On Fri, Feb 22, 2013 at 6:38 AM, Arnd Bergmann arnd@arndb.de wrote:
Label:
MB-SSBGB MBSSBGVEQAFA-XF
...
$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=1024 --count=32
...
===> Suggests 12 MB erase blocks, 16 KB page size
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096]
Arnd, I'm curious: why did you chose "3*4096" instead of "4*4096" given the previous comment? Mixing up 12MB with 12KB?
thanks, grant
On Friday 22 February 2013, Grant Grundler wrote:
On Fri, Feb 22, 2013 at 6:38 AM, Arnd Bergmann arnd@arndb.de wrote:
Label:
MB-SSBGB MBSSBGVEQAFA-XF
...
$ sudo ./flashbench -a /dev/mmcblk0 --blocksize=1024 --count=32
...
===> Suggests 12 MB erase blocks, 16 KB page size
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096]
Arnd, I'm curious: why did you chose "3*4096" instead of "4*4096" given the previous comment? Mixing up 12MB with 12KB?
I never got around to teach flashbench about eraseblocks that have a non-power-of-two number of pages. If I do the above, there are 1024 logical "blocks" in an eraseblock, which works around this limitation, although not too well.
Arnd
On Sat, Feb 23, 2013 at 1:48 PM, Arnd Bergmann arnd@arndb.de wrote: ...
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096]
Arnd, I'm curious: why did you chose "3*4096" instead of "4*4096" given the previous comment? Mixing up 12MB with 12KB?
I never got around to teach flashbench about eraseblocks that have a non-power-of-two number of pages. If I do the above, there are 1024 logical "blocks" in an eraseblock, which works around this limitation, although not too well.
Ah ok! I was reading "--blocksize $[3*4096]" as IO transaction size in bytes (12KB) and not as the erase block size in KB (12MB).
thanks, grant
On Monday 25 February 2013, Grant Grundler wrote:
On Sat, Feb 23, 2013 at 1:48 PM, Arnd Bergmann arnd@arndb.de wrote: ...
$ sudo ./flashbench --open-au /dev/mmcblk0 --erasesize=$[12*1024*1024] --blocksize=$[3*4096]
Arnd, I'm curious: why did you chose "3*4096" instead of "4*4096" given the previous comment? Mixing up 12MB with 12KB?
I never got around to teach flashbench about eraseblocks that have a non-power-of-two number of pages. If I do the above, there are 1024 logical "blocks" in an eraseblock, which works around this limitation, although not too well.
Ah ok! I was reading "--blocksize $[3*4096]" as IO transaction size in bytes (12KB) and not as the erase block size in KB (12MB).
You were reading correctly. "--erasesize" is the erase block size in bytes, while "--blocksize" is the minimum transfer size in bytes. flashbench tries all power-of-two multiples of blocksize starting with erasesize but does not work if erasesize is not a power-of-two multiple of blocksize.
Arnd
flashbench-results@lists.linaro.org