create 10GB file (on 2GB RAM machine, with some swap used to make sure little cache would be available for filesystem.
dd if=/dev/zero of=file bs=1m count=10k
block size is 32KB, fragment size 4k


now test random read access to it (10 threads)

 randomio  test 10 0 0 4096

normal result on such not so fast disk in my laptop.

  118.5 |  118.5   5.8   82.3  383.2   85.6 |    0.0   inf    nan    0.0    nan
  138.4 |  138.4   3.9   72.2  499.7   76.1 |    0.0   inf    nan    0.0    nan
  142.9 |  142.9   5.4   69.9  297.7   60.9 |    0.0   inf    nan    0.0    nan
  133.9 |  133.9   4.3   74.1  480.1   75.1 |    0.0   inf    nan    0.0    nan
  138.4 |  138.4   5.1   72.1  380.0   71.3 |    0.0   inf    nan    0.0    nan
  145.9 |  145.9   4.7   68.8  419.3   69.6 |    0.0   inf    nan    0.0    nan


systat shows 4kB I/O size. all is fine.

BUT random 4kB writes

randomio  test 10 1 0 4096

  total |  read:         latency (ms)       |  write:        latency (ms)
iops | iops min avg max sdev | iops min avg max sdev
--------+-----------------------------------+----------------------------------
   38.5 |    0.0   inf    nan    0.0    nan |   38.5   9.0  166.5 1156.8  261.5
   44.0 |    0.0   inf    nan    0.0    nan |   44.0   0.1  251.2 2616.7  492.7
   44.0 |    0.0   inf    nan    0.0    nan |   44.0   7.6  178.3 1895.4  330.0
   45.0 |    0.0   inf    nan    0.0    nan |   45.0   0.0  239.8 3457.4  522.3
   45.5 |    0.0   inf    nan    0.0    nan |   45.5   0.1  249.8 5126.7  621.0



results are horrific. systat shows 32kB I/O, gstat shows half are reads half are writes.
Why UFS need to read full block, change one 4kB part and then write 
back, instead of just writing 4kB part?
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to