2012年7月14日土曜日

ZFS ashift比較その3 - raidz(4台)

今回は、RAIDZ構成で比較します。

4台構成のraidzで、ashiftオプションの設定による違いを確認します。
まずは、ashit=9でpoolを作ります。
# zpool create tank raidz \
  scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1
# zpool status
  pool: tank
 state: ONLINE
 scan: none requested
config:

        NAME                                          STATE     READ WRITE CKSUM
        tank                                          ONLINE       0     0     0
          raidz1-0                                    ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1  ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1  ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1  ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1  ONLINE       0     0     0

errors: No known data errors
# zdb |grep ashift
            ashift: 9
# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  10.9T   148K  10.9T     0%  1.00x  ONLINE  -
ashift=9の場合の結果は、次のようになります。
$ bonnie++
~ 略 ~
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
abcde.locald 15488M 45119  98 198220  54 96029  35 41985  94 353884  55 233.7   5
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 13007  99 +++++ +++ 13452  98 12167  99 +++++ +++ 14491  99
abcde.localdomain,15488M,45119,98,198220,54,96029,35,41985,94,353884,55,233.7,5,16,13007,99,+++++,+++,13452,98,12167,99,+++++,+++,14491,99
次は、ashift=12でpoolを作ります。
# zpool destroy tank
# zpool create -o ashift=12 tank raidz \
  scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1
# zdb |grep ashift
            ashift: 12
# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  10.9T  1.08M  10.9T     0%  1.00x  ONLINE  -
ashift=12の場合の結果は、次のようになります。
$ bonnie++
~ 略 ~
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
abcde.locald 15488M 44184  98 217651  57 120804  43 43254  93 228627  36 227.7   5
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 12981  99 +++++ +++ 13074  98 12308  99 +++++ +++ 14327  99
abcde.localdomain,15488M,44184,98,217651,57,120804,43,43254,93,228627,36,227.7,5,16,12981,99,+++++,+++,13074,98,12308,99,+++++,+++,14327,99
並べるとこんな感じになります。
Sequential Writeのrewriteが2割強UPして、Block Readが3割強DOWNしています。
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
ashift=9     15488M 45119  98 198220  54 96029  35 41985  94 353884  55 233.7   5
ashift=12    15488M 44184  98 217651  57 120804 43 43254  93 228627  36 227.7   5
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
ashift=9         16 13007  99 +++++ +++ 13452  98 12167  99 +++++ +++ 14491  99
ashift=12        16 12981  99 +++++ +++ 13074  98 12308  99 +++++ +++ 14327  99
Sequential block readで、性能ダウンするのは少し予想と違う結果になりました。
2台のmirror構成から4台のraidz構成に移行を考えているので、ashiftの設定をどちらにするか悩ましいところです。

2012年7月8日日曜日

ZFS ashift比較その2 - raid10

今回は、RAID10構成で比較します。 4台でmirror+stripeの構成を作り、ashiftオプションの設定による違いを確認します。

まずは、ashift=9から。
# zpool create tank \
  mirror scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 \
         scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 \
  mirror scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 \
         scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1
# zpool status
  pool: tank
 state: ONLINE
 scan: none requested
config:

        NAME                                          STATE     READ WRITE CKSUM
        tank                                          ONLINE       0     0     0
          mirror-0                                    ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1  ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1  ONLINE       0     0     0
          mirror-1                                    ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1  ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1  ONLINE       0     0     0

errors: No known data errors
# zdb |grep ashift
            ashift: 9
            ashift: 9
# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  5.44T   110K  5.44T     0%  1.00x  ONLINE  -
ashift=9のbonnie++の結果は、次のようになります。
# bonnie++
~ 略 ~
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
abcde.locald 15488M 45686  99 190095  60 99181  36 43745  93 192523  32 335.0   6
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 12889  97 +++++ +++ 14336  99 12505  99 +++++ +++ 14838  99
abcde.localdomain,15488M,45686,99,190095,60,99181,36,43745,93,192523,32,335.0,6,16,12889,97,+++++,+++,14336,99,12505,99,+++++,+++,14838,99

次は、ashift=12。
# zpool destroy tank
# zpool create -o ashift=12 tank \
  mirror scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 \
         scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 \
  mirror scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 \
         scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1
# zdb |grep ashift
            ashift: 12
            ashift: 12
# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  5.44T   110K  5.44T     0%  1.00x  ONLINE  -
ashift=12の結果は、次のようになります。
# bonnie+++
~ 略 ~
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
abcde.locald 15488M 44152  99 240200  74 112329  42 44438  95 195719  32 342.1   6
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 12948  99 +++++ +++ 13296  98 12095  99 +++++ +++ 14483  99
abcde.localdomain,15488M,44152,99,240200,74,112329,42,44438,95,195719,32,342.1,6,16,12948,99,+++++,+++,13296,98,12095,99,+++++,+++,14483,99

並べるとこんな感じになります。
Sequential Writeが2割強UPしてるのが目立ちます。
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
ashift=9     15488M 45686  99 190095  60 99181  36 43745  93 192523  32 335.0   6
ashift=12    15488M 44152  99 240200  74 112329 42 44438  95 195719  32 342.1   6
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
ashift=9         16 12889  97 +++++ +++ 14336  99 12505  99 +++++ +++ 14838  99
ashift=12        16 12948  99 +++++ +++ 13296  98 12095  99 +++++ +++ 14483  99
前回の2台構成のmirrorと比べるとRAID1とRAID10の比較になるので予想通りですが、Sequential Read/Writeがほぼ2倍になっていることが分かります。

2012年7月7日土曜日

ZFS ashift比較その1 - mirror(2台)

4KBセクタのHDDを使用しているHP ProLiant MicroServer, CentOS 6.2, ZFS on Linuxという環境で、ashiftの設定による性能を比較します。
環境はこんな感じです。
$ uname -r
2.6.32-220.23.1.el6.x86_64
$ rpm -q zfs-* spl-*
zfs-0.6.0-rc8.x86_64
spl-0.6.0-rc8.x86_64

まずは、今まで使用していた2台構成のmirrorで、ashiftオプションの設定による違いを確認します。

ashiftには、512byteセクタの場合は9、4096byteの場合は12を指定することになります。

こんな感じでpoolを作ります。
Seagate ST3000DM001は、論理セクタサイズを512byteと返すので、デフォルトだとashiftは9が使用されるようです。
# zpool create tank mirror \
  scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1
# zdb |grep ashift
            ashift: 9
# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  2.72T   552K  2.72T     0%  1.00x  ONLINE  -
#
ashift=9の場合の結果は、次のようになりました。
# bonnie++
~ 略 ~
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
abcde.locald 15488M 45832  99 114327  36 47687  20 41445  90 93675  16 265.3   4
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 13073  99 +++++ +++ 14567  99  7688  99 +++++ +++  5378  99
abcde.localdomain,15488M,45832,99,114327,36,47687,20,41445,90,93675,16,265.3,4,16,13073,99,+++++,+++,14567,99,7688,99,+++++,+++,5378,99

次は、4096byte用の設定を試します。
pool作製時に、-o ashift=12を指定します。
# zpool destroy tank
# zpool create -o ashift=12 tank mirror \
  scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 \
  scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1
# zdb |grep ashift
            ashift: 12
# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  2.72T   552K  2.72T     0%  1.00x  ONLINE  -
#
ashift=12の場合の結果は、次のようになりました。
# bonnie++
~ 略 ~
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
abcde.locald 15488M 43242  99 135921  41 58642  24 43621  93 105678  19 284.4   5
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 12874  99 +++++ +++ 14309  99 11690  99 +++++ +++ 13996  99
abcde.localdomain,15488M,43242,99,135921,41,58642,24,43621,93,105678,19,284.4,5,16,12874,99,+++++,+++,14309,99,11690,99,+++++,+++,13996,99
結果を並べるとこんな感じになります。
Sequrntial Block Write/Readが大体1,2割性能UPしています。
Per charは、まあそんな感じかという値ですが、Random Create/Delteは、面白い結果ですね。
                    ------Sequential Output------ --Sequential Input- --Random-
                    -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
ashift=9     15488M 45832  99 114327  36 47687  20 41445  90 93675  16 265.3   4
ashift=12    15488M 43242  99 135921  41 58642  24 43621  93 105678 19 284.4   5
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
ashift=9         16 13073  99 +++++ +++ 14567  99  7688  99 +++++ +++  5378  99
ashift=12        16 12874  99 +++++ +++ 14309  99 11690  99 +++++ +++ 13996  99
それぞれの設定についてbonnie++で数回計測したところ、大体同じような結果になったので初回実行時の結果を載せています。