2006年9月25日

ディスクIO性能(8) - ITE8212上でのRAID0の性能

IO-DATA UIDE-133R(ITE8212) に4台のHDDを繋いで幾つかのベンチマークを取ってみた。

環境

毎度のこと検証環境は、

  1. Athlon64X2 3800+ (但し、Single CPUとして制限)
  2. M2NPV-VM(GeForce6150+nForce 430MCP)
  3. メモリは512M(カーネルパラメータで制限)
  4. システム用のHDDで Segate ST3500630AS, SATA
  5. Debian/etch Linux-2.6.16
  6. IO-DATA UIDE-133R(ITE8212)
  7. Seagate ST340015A, 40GB, PATA UDMA100, 2MBキャッシュ, 5400 rpm の4台

ITE8212は、430MCP配下のPCIバス(32bit/33Mhz)にぶら下がっている。

04:08.0 RAID bus controller: <pci_lookup_name: buffer too small> (rev 11)
        Subsystem: Integrated Technology Express, Inc. IT/ITE8212 Dual channel ATA RAID controller
        Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 209
        I/O ports at 9c00 [size=8]
        I/O ports at 9800 [size=4]
        I/O ports at 9400 [size=8]
        I/O ports at 9000 [size=4]
        I/O ports at 8c00 [size=16]
        Expansion ROM at fda00000 [disabled] [size=128K]
        Capabilities: [80] Power Management version 2

測定

測定は、pass through mode で md を使ってRAIDを組んだ場合とsmart modeでBIOSでRAIDを定義した場合のそれぞれで下記構成のRAIDボリュームに対して、シーケンシャルなread/write の性能を 、bonnie++(1.03)を使い測定する。

  1. RAID0 のHDDx1台(1u)。
  2. RAID0 のHDDx 2 台(2u-2ch)。但し、IDEの2チャンネルにそれぞれにHDDを割り当てる。
  3. RAID0 のHDDx 2 台(2u-1ch)。但し、IDEの1チャンネルのみにHDDを割り当てる。
  4. RAID0 のHDDx 3 台(3u)。IDEの片方のチャンネルに2台で一方に1台を割り当てる。
  5. RAID0 のHDDx 4 台(4u)。IDEの両方のチャンネルに2台を割り当てる。
  6. linear のHDDx 4 台(4u)。IDEの両方のチャンネルに2台を割り当てる。

HDDの設定

HDDの設定は hdparm を使っても多く設定が出来ないので、デフォルト値のままにした。

# hdparm  /dev/hda

/dev/hda:
 multcount    =  0 (off)
 IO_support   =  3 (32-bit w/sync)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 19462/255/63, sectors = 312661432, start = 0
# hdparm  -i /dev/hda

/dev/hda:

 Model=Integrated Technology Express Inc, FwRev=, SerialNo=%
 Config={ }
 RawCHS=0/0/0, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=0kB, MaxMultSect=0
 (maybe): CurCHS=0/0/0, CurSects=0, LBA=yes, LBAsects=268435455
 IORDY=no
 PIO modes:  pio0
 DMA modes:  mdma0 mdma1 mdma2
 AdvancedPM=no

 * signifies the current active mode
ファイルシステム

RAIDボリュームは 標準的な ext3 に初期化した。

# dumpe2fs -h /dev/hda1
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          a0060cd1-078c-4212-bc49-849077c18012
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal resize_inode dir_index filetype sparse_super large_file
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              19546112
Block count:              39082120
Reserved block count:     1954106
Free blocks:              38420585
Free inodes:              19546101
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         16384
Inode blocks per group:   512
Filesystem created:       Fri Sep 22 03:17:52 2006
Last mount time:          Fri Sep 22 03:19:57 2006
Last write time:          Fri Sep 22 03:31:15 2006
Mount count:              1
Maximum mount count:      33
Last checked:             Fri Sep 22 03:17:52 2006
Check interval:           15552000 (6 months)
Next check after:         Wed Mar 21 03:17:52 2007
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Journal inode:            8
Default directory hash:   tea
Directory Hash Seed:      e5fb4626-6e46-4fc3-b806-e372ee6acf41
Journal backup:           inode blocks
Journal size:             128M
測定コマンド

bonnie については、下記のコマンドを使用(/mntに対象ボリュームをマウント)。

# bonnie -u root -d /mnt -n 0 -f -b

結果


Version  1.03       ------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
IT8212
md-raid0(1u)     1G           37720   9 18515   4           47306   4 174.0   0
md-raid0(2u-2ch) 1G           75696  21 30213   6           69912   6 261.6   0
md-raid0(2u-1ch) 1G           33420   8 14207   3           28919   2 170.7   0
md-raid0(3u)     1G           46685  12 19849   4           42009   3 249.1   0
md-raid0(4u)     1G           64778  15 25630   5           52087   5 280.2   0
md-linear(4u)    1G           37966   8 18337   4           47288   4 171.8   0
bios-raid0(2u-2ch)1G          60544  18 17886   4           36314   3 169.3   0
bios-raid0(2u-1ch)1G          36289  10 13280   3           30567   2 155.3   0
bios-raid0(3u)   1G           32204   9 15470   3           37817   3 164.9   0
bios-raid0(4u)   1G           39150  11 17373   4           42017   3 183.9   0
bios-linear(4u)  1G           38601  10 18587   4           47329   4 170.2   0
blog20060925-RAID0-IT8212

  1. mdの場合、2units(2channel)で明らかなRAID0性能向上の傾向がread/writeともに見られる。3units/4unitsは、RAID0性能向上の傾向が見られるが、2units(2channel)よりは性能向上は劣っている。
  2. md と smart modeのRAIDを比べると、md を使った方が性能が良い。
  3. 実際の2units(1channel)の性能は1unit比べてやはり劣化がある。

全体的にHDDの台数に性能があまりスケールしない。ただし、IDEの1チャンネルに1台のみぶら下がるようにした場合、台数に対する性能向上が見られる。やはり、IDEの1チャンネルに2台ぶらさがる事が、IDEバスかチップかLinuxのITE8212用のドライバかで並列化を妨げ「劣化」させる要因になっているようである。

結論

PATAでは1チャンネルに複数のデバイスをぶら下げるとRAIDの性能向上を妨げるので、1チャンネル1台にしよう。 姑息に性能を上げるためには、pass through mode で md ベースのRAIDを組もう。但し、過度の期待は禁物である。

0 件のコメント: