Hi,

I grabbed a new flash drive yesterday, so I'm trying to sort out the eraseblock size to format it properly.  I grabbed this one because it was on sale and has a small form factor.  I'm planning to format half of it as swap so that I can plug it in to my tegra 2 tablet while compiling software that requires additional RAM (seamonkey and firefox at least require extra RAM for linking libxul and I don't want to swap a lot on my internal flash or sdcard).

Anyway, here's what I got from fdisk and flashbench:


Disk /dev/sdc: 8166 MB, 8166703104 bytes
256 heads, 63 sectors/track, 989 cylinders, total 15950592 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: 0xc3072e18

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *          56    15950591     7975268    c  W95 FAT32 (LBA)

root@porteus:~/Downloads/flashbench-2e30b19# ./flashbench -a /dev/sdc --blocksize=1024
align 2147483648    pre 494µs    on 491µs    post 494µs    diff -2812ns
align 1073741824    pre 487µs    on 491µs    post 491µs    diff 1.68µs
align 536870912    pre 491µs    on 492µs    post 493µs    diff 204ns
align 268435456    pre 507µs    on 528µs    post 511µs    diff 19.4µs
align 134217728    pre 507µs    on 526µs    post 510µs    diff 17.5µs
align 67108864    pre 508µs    on 524µs    post 505µs    diff 17.8µs
align 33554432    pre 508µs    on 547µs    post 507µs    diff 39.3µs
align 16777216    pre 494µs    on 510µs    post 494µs    diff 16.5µs
align 8388608    pre 511µs    on 531µs    post 508µs    diff 21.6µs
align 4194304    pre 505µs    on 530µs    post 507µs    diff 24µs
align 2097152    pre 507µs    on 526µs    post 508µs    diff 17.8µs
align 1048576    pre 509µs    on 534µs    post 513µs    diff 22.9µs
align 524288    pre 508µs    on 529µs    post 507µs    diff 21.5µs
align 262144    pre 508µs    on 527µs    post 508µs    diff 19µs
align 131072    pre 510µs    on 525µs    post 512µs    diff 13.9µs
align 65536    pre 511µs    on 531µs    post 512µs    diff 19.1µs
align 32768    pre 509µs    on 530µs    post 506µs    diff 22.1µs
align 16384    pre 506µs    on 531µs    post 507µs    diff 24.4µs
align 8192    pre 505µs    on 509µs    post 511µs    diff 1.13µs
align 4096    pre 506µs    on 509µs    post 504µs    diff 4.08µs
align 2048    pre 509µs    on 508µs    post 506µs    diff 882ns

root@porteus:~/Downloads/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc
4MiB    26.1M/s
2MiB    22.6M/s
1MiB    22.9M/s
512KiB  21M/s  
256KiB  19.9M/s
root@porteus:~/Downloads/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=2
4MiB    22.8M/s
2MiB    22.8M/s
1MiB    22.8M/s
512KiB  21.7M/s
256KiB  19.8M/s
root@porteus:~/Downloads/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=3
4MiB    10.4M/s
2MiB    10.2M/s
1MiB    23.3M/s
512KiB  21.2M/s
256KiB  20.2M/s
root@porteus:~/Downloads/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=4
4MiB    4.28M/s
2MiB    2.05M/s
1MiB    2.94M/s
512KiB  2.56M/s
256KiB  2.97M/s
root@porteus:~/Downloads/flashbench-2e30b19#

root@porteus:/mnt/sdb2/flashbench-2e30b19# ./flashbench -O --erasesize=$[2 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=4 --random
2MiB    2.19M/s
1MiB    1.29M/s
512KiB  1.75M/s
^C^[[A
root@porteus:/mnt/sdb2/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=4 --random
4MiB    2.53M/s
2MiB    2.11M/s
1MiB    2.97M/s
512KiB  2.6M/s 
256KiB  1.44M/s
root@porteus:/mnt/sdb2/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=3 --random
4MiB    4.27M/s
2MiB    6.6M/s 
1MiB    10.6M/s
512KiB  6.56M/s
256KiB  10.1M/s
root@porteus:/mnt/sdb2/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=2 --random
4MiB    4.9M/s 
2MiB    8.12M/s
1MiB    8.43M/s
512KiB  4.91M/s
256KiB  21.5M/s
root@porteus:/mnt/sdb2/flashbench-2e30b19# ./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024] /dev/sdc --open-au-nr=1 --random
4MiB    5.1M/s 
2MiB    4.82M/s
1MiB    26.7M/s
512KiB  5.01M/s
256KiB  4.72M/s
root@porteus:/mnt/sdb2/flashbench-2e30b19#

I had a hard time determining the eraseblock size from the '-a' test; the numbers seemed to keep jumping around on me.  I assumed that I was dealing with 4mb eraseblocks (but was kind of a guess on my part, since most of my other devices are 4mb), and testing the open-au's seemed to confirm this (in my mind anyway) as going to 8, 16, or 32 MB erasesizes slowed down quite a bit, even with only one au.

I'd consider myself a novice at all of this; if you'd like me to run some additional testing with different parameters, just let me know.  For now, I'm assuming 4mb eraseblocks, with no offset (not sure how to confirm that), 16kb page size, with 2 linear and 2 or 3 random au's.

Thanks!