On Mon, 23 Jul 2012 22:29:38 -0500 Gerald Livingston debuser@sysmatrix.net wrote:
On Mon, 23 Jul 2012 07:23:59 -0400 Andrew Bradford andrew@bradfordembedded.com wrote:
On Fri, 20 Jul 2012 12:37:06 -0500 Gerald Livingston debuser@sysmatrix.net wrote:
Patriot LX Series 16GB Class 10 PSF16GSDHC10-PC
buffy:/usr/local/src/flashbench# ./flashbench /dev/sdk --open-au --erasesize=$[4*1024*1024] --blocksize=$[16*1024] --open-au-nr=1 4MiB 4.5M/s 2MiB 4.51M/s 1MiB 4.51M/s 512KiB 4.55M/s 256KiB 4.57M/s 128KiB 4.4M/s 64KiB 4.41M/s 32KiB 3.46M/s 16KiB 2.63M/s buffy:/usr/local/src/flashbench# ./flashbench /dev/sdk --open-au --erasesize=$[4*1024*1024] --blocksize=$[16*1024] --open-au-nr=2 4MiB 4.52M/s 2MiB 4.5M/s 1MiB 4.51M/s 512KiB 4.54M/s 256KiB 4.58M/s 128KiB 4.39M/s 64KiB 4.42M/s 32KiB 3.44M/s 16KiB 2.63M/s
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.
head /sys/block/mmcblk0/device/* 2>/dev/null | grep -v ^$
==> /sys/block/mmcblk0/device/block <== ==> /sys/block/mmcblk0/device/cid <== 2750485344313647307ca14c6d00c200 ==> /sys/block/mmcblk0/device/csd <== 400e00325b59000077477f800a400000 ==> /sys/block/mmcblk0/device/date <== 02/2012 ==> /sys/block/mmcblk0/device/driver <== ==> /sys/block/mmcblk0/device/erase_size <== 512 ==> /sys/block/mmcblk0/device/fwrev <== 0x0 ==> /sys/block/mmcblk0/device/hwrev <== 0x3 ==> /sys/block/mmcblk0/device/manfid <== 0x000027 ==> /sys/block/mmcblk0/device/name <== SD16G ==> /sys/block/mmcblk0/device/oemid <== 0x5048 ==> /sys/block/mmcblk0/device/power <== ==> /sys/block/mmcblk0/device/preferred_erase_size <== 4194304 ==> /sys/block/mmcblk0/device/scr <== 0235800001000000 ==> /sys/block/mmcblk0/device/serial <== 0x7ca14c6d ==> /sys/block/mmcblk0/device/subsystem <== ==> /sys/block/mmcblk0/device/type <== SD ==> /sys/block/mmcblk0/device/uevent <== DRIVER=mmcblk MMC_TYPE=SD MMC_NAME=SD16G MODALIAS=mmc:block
This seems to match what's already in the table. You probably have the same controller in your card.
-Andrew