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?
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...
If you see a drop in the times when doing a read test, this often will indicate the size of the erase block, but not always. It's just a first pass test which is quick to run and does not damage contents of the card.
Why not always? And is it improbable that sandisk gave the card such small blocks for better small-file performance?
If you would prefer to pick a size to use which may not be the exact size of your erase blocks but should be a multiple, use 24 MiB to align your partitions. 24 is the least common multiple of 1.5, 2, 3, 4, 6, and 8 MiB (which are the most common erase block sizes in my experience) and on most disks will result in aligned partitions but does possibly throw away more space as unused than finding the exact erase block size.
That sounds like a good idea though, thanks.
#Regards/MPartap