ZFSの速度評価

  • sysctl vm.stats.vm.v_page_size -> 4096

の時

の二つを評価。同一ディスク上に二つのファイルシステムがある状態。

dd

こんな感じで計り、ddの表示をそのまま採用した。試行は一回だけ。

  zfs: % dd if=/dev/zero of=/home/dd-test bs=1024 count=100000
  ufs: % dd if=/dev/zero of=/tmp/dd-test  bs=1024 count=100000

結果:

 bs=1024 count=100000 (= 100Mbytes)
 zfs: 13.010357 secs ( 7870653 bytes/sec)
 ufs:  7.583366 secs (13503238 bytes/sec)

 bs=1024 count=1000000 (= 1Gbytes)
 zfs: 191.210952  secs ( 5355342 bytes/sec)
 ufs:  74.9816644 secs (13656676 bytes/sec)

 bs=5120 count=200000 (= 1Gbytes)
 zfs: 128.459490 secs ( 7971385 bytes/sec)
 ufs:  75.892954 secs (13492689 bytes/sec)

 bs=10240 count=100000 (= 1Gbytes)
 zfs: 117.674333 secs ( 8701983 bytes/sec)
 ufs:  74.289156 secs (13783977 bytes/sec)

zeroじゃなくて今度はurandomを使ってみる。

  # dd if=/dev/urandom of=/home/dd-test bs=1024 count=100000

結果:

 bs=1024 count=100000 (= 100Mbytes)
 zfs: 14.454666 secs ( 7084218 bytes/sec)
 ufs: 10.156366 secs (10082346 bytes/sec)

 bs=1024 count=1000000 (= 1Gbytes)
 zfs: 187.687995 secs ( 5455863 bytes/sec)
 ufs:  98.767879 secs (10367743 bytes/sec)

 bs=5120 count=200000 (= 1Gbytes)
 zfs: 170.846296 secs ( 5993692 bytes/sec)
 ufs:  74.584799 secs (13729339 bytes/sec)

 bs=10240 count=100000 (= 1Gbytes)
 zfs: 165.655980 secs ( 6181485 bytes/sec)
 ufs:  73.993270 secs (13839096 bytes/sec)

bonnie++

ZFS:

一回目。UFSの方で空き容量が足りなくなってパラメータを変えたので意味が無いんだけどまあ一応。

Version 1.93c       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
dhcp106.examp 2528M    13  95  8102  11  3505   5    33  97 11926   6  34.2   2
Latency              1064ms   12969ms   14202ms    1137ms    5624ms     826ms

Version 1.93c       ------Sequential Create------ --------Random Create--------
dhcp106.example.jp  -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  3382  81 16515  99  3563  90  3755  85 16319  98  3642  89
Latency               138ms     575us     235ms     194ms    5904us     243ms

で、二回目。コマンドはこれ。boonie++はメモリ容量の二倍の一時ファイルを作るんだが、(buffer cacheを無効にするため)そんなに容量がなかったので、512MBにメモリを制限した。一応-bオプションはつけているけど。

 ZFS: % bonnie++ -r -b 512 /home/tmp
 UFS: % bonnie++ -r -b 512 /tmp
Version 1.93c       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
dhcp106.examp    1G    13  93  8295  12  3530   5    33  98 12855   7  35.9   2
Latency              2149ms   11055ms   15139ms    1293ms    4871ms    1054ms
Version 1.93c       ------Sequential Create------ --------Random Create--------
dhcp106.example.jp  -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16    61   2 13944  99    60   2    61   2 14392  99    58   2
Latency               293ms     671us     278ms     231ms    1456us     445ms

UFS:

Version 1.93c       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
dhcp106.example. 1G    39  99 13628  11 10730  12    69  99 232192  99 722.8  38
Latency               215ms     188ms    1012ms     206ms    1385us    1281ms
Version 1.93c       ------Sequential Create------ --------Random Create--------
dhcp106.example.jp -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16   377   9 26538  99   723  12   382   9 25185  99   300   5
Latency               144ms     202us   56777us   72140us     209us     416ms

総論

zfsはufsの2〜3倍遅い。速度に期待するファイルシステムではない、ということか。

間違っていたらコメントお願いします。