WD20EARSが遅い

とにかく,状況がよくわからないので現状だけ記録.こっちも,WD20ERSを5個買ってしまってるので死活問題.

まず,ハードは

【CPU】 i3 530 1.86GHz
【M/B】 DH55TC
【電源】KRPW-VII-600
【FAN】 120mm*1 140mm*1
【VGA】 オンボード
【HDD】 ADATA SSD 300, WD20EARS*5
【メモリ】 DDR3 1333 2GB*2
【Sound】 オンボ
【LAN】 オンボ(82758DC)
【OS】 FreeBSD 9.0-CURRENT
【光学ドライブ】なし

アイドルはHDDが全部スピンダウンすれば60W台に落ちるけど,普通は72Wくらいとかなり大きい.アクセスすると場合によっては100W程度に跳ね上がるかなり地球に優しくない仕様.

まずは,ドライブ自体の性能としては

dd if=/dev/zero of=/dev/ada3 bs=100M count=100 
100+0 records in
100+0 records out
10485760000 bytes transferred in 96.476592 secs (108687090 bytes/sec)

で,速いとは言いがたいけど,WD20EARSの標準的な性能の枠内.

これを,普通にzpool createでZFSのディレクトリを作ってbonnie++した結果が,

Version  1.96       ------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
hafnium.smectic_ 8G    72  99 62639  14 36662  11   213  99 77332  11 117.4  15
Latency               195ms    6076ms    6614ms   63691us    2221ms    1910ms
Version  1.96       ------Sequential Create------ --------Random Create--------
hafnium.smectic_g.c -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 14451  97 +++++ +++ 15421  98 16878  96 +++++ +++ 15382  98
Latency             13895us     128us     287us   27652us      74us     388us

と絶望的に遅い.

FreeBSDが,WD20EARSを4Kセクターだと認識できないのが悪い*1のかと思い,

gnop create -S 4096 /dev/ada2
zpool create tank /dev/ada2.nop

として,強制的に4Kセクターとして認識させてみたらどうなるかというのが次で,

Version  1.96       ------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
hafnium.smectic_ 8G    70  99 72083  16 43463  13   208  99 80571  10 119.8  18
Latency               389ms    5480ms    5488ms   53622us     974ms    1513ms
Version  1.96       ------Sequential Create------ --------Random Create--------
hafnium.smectic_g.c -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 14731  97 +++++ +++ 15269  98 16706  97 +++++ +++ 15229  98
Latency             14175us     122us     422us   28550us      72us     420us

少しは改善されるけど,まだ頭が痛い範囲.

とりあえず,所々に出てくる63という数字が怪しげすぎるので,そこを修正してどうなるかをやってみる予定.

追記

理由は不明だが,

dd if=/dev/zero of=/dev/ada1 bs=10M count=1
zpool create tank /dev/ada1

として,bonnie++をすると,

Version  1.96       ------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
hafnium.smectic_ 8G    74  99 70644  15 41450  12   212  99 85786  11 113.3  13
Latency               532ms    5792ms    5889ms   60440us     467ms    3403ms
Version  1.96       ------Sequential Create------ --------Random Create--------
hafnium.smectic_g.c -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 14933  96 +++++ +++ 15281  98 16733  97 +++++ +++ 15272  98
Latency             14009us     126us     359us   28415us      71us     423us

となって,妙に速くなる.謎だ.この細工をした後の2TB*5ストライプが

Version  1.96       ------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
hafnium.smectic_ 8G    76  99 178456  40 66896  20   206  97 102828  13 269.5  15
Latency               464ms    1476ms    1386ms     426ms     414ms     394ms
Version  1.96       ------Sequential Create------ --------Random Create--------
hafnium.smectic_g.c -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 16585  97 +++++ +++ 15231  98 16849  97 +++++ +++ 15142  98
Latency             13857us      82us     318us   27950us      71us     416us

と,readが遅いのみはそこそこ.2TB*5のraidzだと,

Version  1.96       ------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
hafnium.smectic_ 8G    76  99 112684  25 55420  17   212  99 113982  15 119.9  13
Latency               550ms    2732ms    2639ms   99935us     649ms    7214ms
Version  1.96       ------Sequential Create------ --------Random Create--------
hafnium.smectic_g.c -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 14764  88 +++++ +++ 14268  93 16063  93 +++++ +++ 14646  93
Latency             14213us     128us     398us   28136us     102us     277us

となって,まあ遅いけど,許容しようというレベルに落ち着いたからいいかなと.

追記2

メモリを4GB->8GBにして,prefetchをonにしたら(vfs.zfs.prefetch_disable=0),

Version  1.96       ------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
hafnium.smectic 16G    66  98 123519  29 95487  30   211  99 316246  38 108.6  12
Latency               318ms    6803ms    5034ms   76517us    1027ms    7856ms
Version  1.96       ------Sequential Create------ --------Random Create--------
hafnium.smectic_g.c -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 12121  74  1505   4  9606  77 14837  88 +++++ +++  9957  78
Latency               100ms    5086ms     226ms   25163us      52us     240ms
1.96,1.96,hafnium.smectic_g.com,1,1269783359,16G,,66,98,123519,29,95487,30,211,99,316246,38,108.6,12,16,,,,,12121,74,1505,4,9606,77,14837,88,+++++,+++,9957,78,318ms,6803ms,5034ms,76517us,1027ms,7856ms,100ms,5086ms,226ms,25163us,52us,240ms

と,何か振り切れちゃった感じ.ただ,latencyがかなーり悪化したのがなぜだかわからないけど.

*1:というか,どんなOSでもディスクが512Bセクターですと言い張っているものを4Kセクターだと看破することなんて出来やしないわけで