On 08/06/2014 02:50 PM, Marcel Partap wrote:
Finding the erase block size in order to align the partitions is more important than the mkfs parameters and will make a much larger impact on performance than setting ideal stride and stripe.
[...]
Likely the card does not have an erase block size smaller than 2 MiB due to the amount of flash in it, so 128 kiB is probably not the correct erase block size. Most larger sized cards have 2, 4 or 8 MiB erase blocks these days.
Why then would there not be a step in timing difference at f.e. 2MiB?
SanDisk controllers are known to have fancy tricks which result in better performance under certain loads, hiding the actual erase block size may be a side effect. I don't really know the root cause but I have seen this kind of behavior before.
It's probably easier for those who read this list to see raw output of flashbench rather than looking at csv files or plots in order to assist with interpreting your results.
Here it is.
flashbench --count=1000 -a /dev/sdb --blocksize=$((1*1024)) align 4294967296 pre 611µs on 799µs post 615µs diff 186µs align 2147483648 pre 615µs on 792µs post 619µs diff 175µs align 1073741824 pre 608µs on 812µs post 613µs diff 201µs align 536870912 pre 615µs on 771µs post 619µs diff 153µs align 268435456 pre 607µs on 774µs post 612µs diff 164µs align 134217728 pre 614µs on 800µs post 617µs diff 185µs align 67108864 pre 614µs on 799µs post 618µs diff 183µs align 33554432 pre 612µs on 783µs post 614µs diff 171µs align 16777216 pre 607µs on 748µs post 613µs diff 138µs align 8388608 pre 605µs on 742µs post 605µs diff 137µs align 4194304 pre 603µs on 749µs post 608µs diff 143µs align 2097152 pre 603µs on 750µs post 607µs diff 146µs align 1048576 pre 601µs on 741µs post 603µs diff 139µs align 524288 pre 603µs on 767µs post 615µs diff 158µs align 262144 pre 597µs on 747µs post 604µs diff 146µs align 131072 pre 606µs on 751µs post 611µs diff 143µs align 65536 pre 603µs on 705µs post 609µs diff 99.1µs align 32768 pre 606µs on 694µs post 595µs diff 93.6µs align 16384 pre 601µs on 703µs post 604µs diff 100µs align 8192 pre 614µs on 613µs post 611µs diff 351ns align 4096 pre 613µs on 616µs post 608µs diff 5.19µs align 2048 pre 612µs on 613µs post 614µs diff 276ns
What would you make from that? The drop-off definitely is @128K...
Could be caching or intermediate SLC flash or the page size.
Try running with '--blocksize=$(3*1024)' and see if any noticeable changes happen. Some SanDisk cards look like 1.5 MiB erase blocks and this can be exposed with the 3072 blocksize.
Alternatively, you can do write testing and move the offset to span where you think the erase block edges are and see if performance drops off when crossing the erase block boundary. This is a better indicator but takes much longer to do.
Thanks, Andrew