On Wednesday 06 April 2011, Sascha Silbe wrote:
Excerpts from Arnd Bergmann's message of Tue Apr 05 00:17:14 +0200 2011:
Ah, I see. Here we go:
flashtest@flatty:~/flashbench$ time ./flashbench -a /dev/mmcblk[0-9] --blocksize=1024 --count=100 | tee ~/sandisk_a_1k.result align 402653184 pre 5.06ms on 5.99ms post 2.74ms diff 2.09ms align 268435456 pre 3.44ms on 3.8ms post 3.67ms diff 244µs align 201326592 pre 4.74ms on 5.83ms post 2.77ms diff 2.07ms align 134217728 pre 2.78ms on 2.89ms post 2.92ms diff 32.5µs align 100663296 pre 5.04ms on 5.65ms post 2.74ms diff 1.76ms align 67108864 pre 3.48ms on 3.71ms post 3.68ms diff 135µs align 50331648 pre 5.53ms on 5.93ms post 2.73ms diff 1.8ms align 33554432 pre 2.74ms on 2.89ms post 2.93ms diff 52.1µs align 25165824 pre 5.29ms on 5.66ms post 2.78ms diff 1.62ms align 16777216 pre 3.5ms on 3.79ms post 3.67ms diff 204µs align 12582912 pre 5.15ms on 5.77ms post 2.75ms diff 1.82ms align 8388608 pre 2.52ms on 2.69ms post 2.71ms diff 72.9µs align 6291456 pre 4.69ms on 5.46ms post 2.54ms diff 1.85ms align 4194304 pre 3.23ms on 3.46ms post 3.31ms diff 189µs align 3145728 pre 4.79ms on 5.41ms post 2.54ms diff 1.74ms align 2097152 pre 2.57ms on 2.72ms post 2.71ms diff 77.8µs align 1572864 pre 4.63ms on 5.81ms post 2.61ms diff 2.2ms align 1048576 pre 3.26ms on 3.49ms post 3.29ms diff 215µs align 786432 pre 3.28ms on 3.45ms post 2.58ms diff 524µs align 524288 pre 2.52ms on 2.69ms post 2.69ms diff 88µs
Ok, so all multiples of 1.5 MB are an order of magnitude slower in the "diff" column than the others, which makes it clear that there is something going on at that point. I should probably modify the test so that the 2 MB alignment actually does 6 MB, which would make it a superset of 1.5 and of 2.
(--random)
Trying 10 open AUs: 1.5MiB 3.82M/s 2.9M/s 3.16M/s 2.39M/s 2.08M/s 768KiB 3.86M/s 3.13M/s 3.52M/s 4.11M/s 3.65M/s 384KiB 3.11M/s 3.57M/s 2.75M/s 2.72M/s 3.17M/s 192KiB 3.14M/s 2.98M/s 2.94M/s 3.08M/s 2.52M/s 96KiB 2.39M/s 2.15M/s 2.64M/s 2.03M/s 2.26M/s 48KiB 1.37M/s 1.32M/s 1.22M/s 1.18M/s 1.47M/s 24KiB 1.03M/s 1.29M/s 1.24M/s 1.48M/s 1.1M/s 12KiB 1.23M/s 1.36M/s 1.36M/s 1.14M/s 1.22M/s 6KiB 336K/s 334K/s 342K/s 354K/s 345K/s 3KiB 173K/s 166K/s 172K/s 175K/s 161K/s 1.5KiB 100K/s 96.4K/s 98.6K/s 96.9K/s 95.8K/s
(not random)
Trying 10 open AUs: 1.5MiB 1.89M/s 3.13M/s 3.87M/s 4.99M/s 3.59M/s 768KiB 3.2M/s 3.91M/s 3.74M/s 3.07M/s 3.29M/s 384KiB 3.78M/s 2.61M/s 2.55M/s 3.17M/s 2.63M/s 192KiB 2.49M/s 3.1M/s 2.98M/s 3.09M/s 3.29M/s 96KiB 2.09M/s 2.45M/s 2.12M/s 2.07M/s 2.51M/s 48KiB 1.31M/s 1.35M/s 1.27M/s 1.35M/s 1.25M/s 24KiB 1.18M/s 982K/s 1.4M/s 1.33M/s 1.06M/s 12KiB 1.14M/s 1.33M/s 1.09M/s 1.06M/s 1.14M/s 6KiB 424K/s 488K/s 500K/s 444K/s 421K/s 3KiB 190K/s 185K/s 182K/s 200K/s 190K/s 1.5KiB 145K/s 144K/s 145K/s 143K/s 147K/s
I'm afraid the numbers don't make much more sense to me than before. :-/
There are a few things that are notable here:
* The numbers for --random and not random are roughly the same, so you don't really need to do both. I'd suggest running only --random tests.
* anything under 12 KB blocks is awfully slow, so you can probably speed up the test process by running --blocksize=12
* The variance between the test runs has significantly gone down, which is a good sign.
* You did not try any larger values for --open-au-nr=. Since the blocksize is relatively small, it is possible that the number of open AUs is much higher on this card. Try a much larger value (e.g. 32) once to see if you get a radical change, then go smaller from there. You don't really need to try every value for open-au-nr, finding the cut-off is the interesting one.
* It is possible that this card has a fully log-structured approach, which would mean that there actually is no cut-off but that it simply gets gradually slower with more open AUs. I have no programmatic way to find these yet.
Arnd