0

I've created two zfs pools (one with ssds, the other rust) and run bonnie against each to try to understand their performance but I find the output somewhat confusing as the performance seems practically identical. I was wondering if I'm misinterpreting the output or if someone could offer advice on what might be going on?

Both pools have a single mirror vdev containing two disks.

SSD Pool - 2 x 500GB Samsung 850 Pro, ashift=13

bonnie -u root -d /ssdpool/images/

Version      1.98   ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
is7734 126G::8192:5  177k  99  475m  97  438m  98  376k  99  1.4g  99 +++++ +++
Latency             69204us     100ms     104ms   33890us     925us    6948us
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
      files:max:min  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
is77346          16 16845  98 +++++ +++  2463  10 +++++ +++ +++++ +++ 22164  98
Latency              6213us     708us    5089ms    2565us      42us     910us
bonnie++ -d /ssdpool/images/ -s 128G:4k -u root

Version  1.98       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
is77346     128G:4k  180k  99  343m  98  305m  99  396k  99  989m  99 +++++ +++
Latency             31352us     102ms     101ms   16948us     952us   12772us
Version  1.98       ------Sequential Create------ --------Random Create--------
is77346             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16     0  98 +++++ +++ 724249376  10 +++++ +++ +++++ +++ 724249376  99
Latency              2523us     488us    5379ms    2562us      92us     926us

fio --name=random-write --ioengine=sync --iodepth=4 --rw=randwrite --bs=4k --direct=0 --size=256m --numjobs=16 --end_fsync=1
[...]
Run status group 0 (all jobs):
  WRITE: bw=212MiB/s (222MB/s), 13.2MiB/s-15.5MiB/s (13.9MB/s-16.2MB/s), io=4096MiB (4295MB), run=16565-19359msec

HDD Pool - 2 x 4TB WD Green, ashift=12

bonnie -u root -d /hddpool/images/

Version  1.98       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
is77346        126G  166k  94  391m  86  345m  82  387k  99  1.4g  99 11676 399
Latency             97954us     101ms     105ms   39728us     939us   10904us
Version  1.98       ------Sequential Create------ --------Random Create--------
is77346             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16     0  73 +++++ +++ 724249376   7     0  78 +++++ +++ 724249376  16
Latency               100ms     667us    6853ms    3384us      20us     563ms
bonnie++ -d /hddpool/images/ -s 128G:4k -u root

Version  1.98       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
is77346     128G:4k  166k  99  315m  96  268m  96  355k  99  979m  99  6563 259
Latency             32958us     101ms     103ms   26880us    1019us   11142us
Version  1.98       ------Sequential Create------ --------Random Create--------
is77346             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16     0  92 +++++ +++ 724249376   7     0  81 +++++ +++ 724249376  18
Latency              2562us     949us    6462ms    3451us      31us     626ms
fio --name=random-write --ioengine=sync --iodepth=4 --rw=randwrite --bs=4k --direct=0 --size=256m --numjobs=16 --end_fsync=1
[...]
Run status group 0 (all jobs):
  WRITE: bw=33.0MiB/s (35.6MB/s), 2175KiB/s-2623KiB/s (2227kB/s-2686kB/s), io=4096MiB (4295MB), run=99950-120548msec

In case it's also worth mentioning the other config in the system:

  • OS is Ubuntu 20.04 running on SSD
  • 64GB RAM
  • both pools use: atime=off, recordsize=64k, compression=lz4
  • I haven't explicitly configured zil or l2arc so unless they use the OS disk by default then they won't be configured.

On @francisaugusto suggestion in the comments I ran fio (see results above) and it shows a significant difference between the two pools. I'm still unsure why bonnie gives such similar results but I feel reassured that things are working properly. If anyone is reading this in the future, maybe give bonnie a miss and start out with fio.

James
  • 325
  • 2
  • 10
  • 22
  • Hi! Could you try a different block size? – francisaugusto Sep 10 '20 at 11:48
  • Hi @francisaugusto. Thanks for your input. Could you clarify please - are you referring to the size in bonnie (e.g. `-s 126g:512k` for 512k) or changing the block size with ashift on the pool? – James Sep 10 '20 at 14:21
  • I meant at bonnie. The performance of an SSD vs an HDD gets towards the same the highest size of the block you use on read/write. Try with 4K as blocksize on bonnie to see the results. – francisaugusto Sep 11 '20 at 15:17
  • @francisaugusto ok, that would make sense. I've run the 4k tests (output above) but they're still looking remarkably similar :-\ – James Sep 14 '20 at 11:48
  • That's weird. Did you try with `fio`? It might be worth to check it out to see if you get the same results. – francisaugusto Sep 18 '20 at 08:20
  • @francisaugusto thanks for the `fio` suggestion. Results above - looks much better. – James Sep 18 '20 at 13:34
  • Oh that's a shame... you used an [fio sync ioengine with ioedepth greater than one which is a combination that doesn't really change anything](https://stackoverflow.com/a/53607601/2732969). Also please be aware of how recordsize can have a big impact on things when you're using ZFS (see https://serverfault.com/a/1021299/203726 ) and you choose to benchmark with a smaller than recordsize block size. – Anon Sep 20 '20 at 07:04

0 Answers0