On Monday 14 March 2011, Philippe De Muyter wrote:
I finally found the culprit there : tmp179:~ # cat /etc/cron.d/novell.ntp-synchronize -*/15 * * * * root /etc/init.d/ntp ntptimeset &>/dev/null tmp179:~ #
I have modified your source to use CLOCK_MONOTONIC instead of CLOCK_REALTIME,
Ok, good to know.
and with the command : ./flashbench -s --scatter-span=3 --scatter-order=14 --blocksize=8192 --count=50 /dev/sdb -o /tmp/output.plot I got the attached result. What do you think of it ?
Unfortunately, not much result again. The only result that is obvious is the bump between 16 and 20 MB, which is an indication that this is an open allocation unit, and is slightly slower to read than others. I see this as a hint that the erase block size is actually 4 MB, not 8 MB, and that the erase block sizes start at full multiples of their size (as is normally the case).
To verify this, you could write to a single block in another erase block, e.g. using dd if=/dev/zero of=/dev/sdb bs=64K seek=128 count=1, and see how the picture changes. To speed up the process, you can lower scatter-span to 1 (only do one block at a time) and scatter-order to 12 (do only the first 32 MB, i.e. 8kb*2^12, instead of the first 128 MB of the drive). You can probably also do a much lower repeat count, e.g. 10, since the effect appears to be quite visible.
About 92% of the requests took between 4.21 and 4.23 ms to complete, which is fairly uniform, the other 8% were significantly faster at around 3.99 ms. I'm sure that there is a reason for this, but I don't understand it.
Arnd