On Mon, 23 Jul 2012 22:29:38 -0500 Gerald Livingston debuser@sysmatrix.net wrote:
==> /sys/block/mmcblk0/device/manfid <== 0x000027 ==> /sys/block/mmcblk0/device/name <== SD16G ==> /sys/block/mmcblk0/device/oemid <== 0x5048
This is a Phison controller, wich usually has the same crappy behavior as the Toshiba ones used in Kingston cards. This one seems to be a little better.
On Tuesday 24 July 2012, Andrew Bradford wrote:
buffy:/usr/local/src/flashbench# ./flashbench /dev/sdk --open-au --erasesize=$[4*1024*1024] --blocksize=$[16*1024] --open-au-nr=1 --random 4MiB 4.52M/s 2MiB 3.3M/s 1MiB 1.76M/s 512KiB 1.53M/s 256KiB 1.61M/s 128KiB 1.47M/s 64KiB 1.38M/s 32KiB 1.37M/s 16KiB 1.11M/s buffy:/usr/local/src/flashbench# ./flashbench /dev/sdk --open-au --erasesize=$[4*1024*1024] --blocksize=$[16*1024] --open-au-nr=2 --random 4MiB 3.29M/s 2MiB 3.28M/s 1MiB 1.76M/s 512KiB 1.53M/s 256KiB 1.6M/s 128KiB 1.46M/s 64KiB 1.37M/s 32KiB 1.36M/s 16KiB 1.09M/s
If the card is really a class 10 card, I'd expect 10M/s or higher with --open-au=1 without --random at the larger sizes. Your card reader might be the cause of the slowness. Can you verify these speeds with another card reader?
The without --random results look good, it's possible that the card can handle more than 2 linear open-au. Can you try increasing --open-au=, one at a time till you see a dramatic decrease in speeds at the smaller block sizes? Usually when you start hitting K/s at the 16KiB or 32KiB size, you're hitting the limits.
The random performance isn't stellar. You could try increasing --open-au= here, too, to see what happens.
It is much better than expected for a Phison controller though, in the regard that it can do some random I/O. I've seen an 8GB Toshiba class 4 card recently that can do up to 3 erase blocks in random I/O mode, so I wonder if it's the same thing here.
The numbers were looking quite similar:
$ sudo ./flashbench --open-au /dev/mmcblk0 --blocksize=8192 --erasesize=$[4*1024*1024] --open-au-nr=2 --random 4MiB 5.03M/s 2MiB 2.69M/s 1MiB 3.15M/s 512KiB 1.43M/s 256KiB 1.75M/s 128KiB 1.89M/s 64KiB 1.37M/s 32KiB 1.2M/s 16KiB 1.19M/s 8KiB 613K/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --blocksize=8192 --erasesize=$[4*1024*1024] --open-au-nr=3 --random 4MiB 6.27M/s 2MiB 3.31M/s 1MiB 3.14M/s 512KiB 1.43M/s 256KiB 1.76M/s 128KiB 1.89M/s 64KiB 1.37M/s 32KiB 1.2M/s
$ sudo ./flashbench --open-au /dev/mmcblk0 --blocksize=8192 --erasesize=$[4*1024*1024] --open-au-nr=4 --random 4MiB 3.23M/s 2MiB 4.27M/s 1MiB 1.45M/s 512KiB 628K/s ^C
Arnd