2006年9月27日

ディスクIO性能(9) - 430MCP上でのRAID0の性能

M2NPV-VM の onBoard のPATAであるnForce 430MCPに4台のHDDを繋いで幾つかのベンチマークを取ってみた。

果たして、Chipset に組み込まれているIDEは早いらしいとか言うのは正しいのだろうか?

環境

毎度のこと検証環境は、

  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. Seagate ST340015A, 40GB, PATA UDMA100, 2MBキャッシュ, 5400 rpm の4台

Chipset のサウスブリッジ 430MCPには、IDEインタフェースが組み込まれている。

# lspci -s 00:0d.0 -v
00:0d.0 IDE interface: nVidia Corporation MCP51 IDE (rev a1) (prog-if 8a [Master SecP PriP])
        Subsystem: ASUSTeK Computer Inc. Unknown device 81c0
        Flags: bus master, 66MHz, fast devsel, latency 0
        I/O ports at f400 [size=16]
        Capabilities: [44] Power Management version 2
 

測定

測定は、md で下記構成の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の設定

4台のHDDは hdparm を使い、下記の様に設定。

# hdparm -d 1 -c 3 -m 16 -W 1 -tTi /dev/hda  

/dev/hda:
 setting 32-bit IO_support flag to 3
 setting multcount to 16
 setting using_dma to 1 (on)
 setting drive write-caching to 1 (on)
 multcount    = 16 (on)
 IO_support   =  3 (32-bit w/sync)
 using_dma    =  1 (on)

 Model=ST340015A, FwRev=3.01, SerialNo=5LAJS1TX
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78165360
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6

 * signifies the current active mode

 Timing cached reads:   3936 MB in  1.99 seconds = 1973.79 MB/sec
 Timing buffered disk reads:  130 MB in  3.03 seconds =  42.97 MB/sec
ファイルシステム

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

# dumpe2fs -h /dev/md0
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:   
Last mounted on:          
Filesystem UUID:          8ba1a4a7-9a35-4a2a-994b-721745dbdb8b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              19546112
Block count:              39081472
Reserved block count:     1954073
Free blocks:              38419937
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:       Thu Sep 28 22:43:21 2006
Last mount time:          Thu Sep 28 22:45:13 2006
Last write time:          Thu Sep 28 22:45:13 2006
Mount count:              1
Maximum mount count:      25
Last checked:             Thu Sep 28 22:43:21 2006
Check interval:           15552000 (6 months)
Next check after:         Tue Mar 27 22:43:21 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:      9b620d96-95a0-48e6-9336-5d9cb21f847f
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
430MCP
md-raid0(1u)     1G           37910   8 18697   3           47355   4 164.6   0
md-raid0(2u-2ch) 1G           75550  18 30762   6           85096   8 260.1   0
md-raid0(2u-1ch) 1G           32792   8 13865   2           28791   2 171.0   0
md-raid0(3u)     1G           51519  14 19736   4           42076   4 248.8   0
md-raid0(4u)     1G           78513  20 25605   5           50256   4 287.6   0
md-linear(4u)    1G           37635   8 18120   3           47276   4 168.8   0
blog20060927-RAID0-430MCP

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

ほとんどITE8212/pass through mode の挙動と同じである。若干、3units/4units での性能向上が見られる。 やはり、IDEの1チャンネルに2台ぶらさがる事が並列化を妨げ「劣化」させる要因になっているようである。

結論

PATAでは1チャンネルに複数のデバイスをぶら下げるとRAIDの性能向上を妨げるので、1チャンネル1台にしよう。

0 件のコメント:

Cocoa Emacs 24.3 構築 (2013/03版)

暫く使っている Cocoa Emacs を更新していなかったので、24.3 に上げてみた。 当てるパッチは inline patch と ポップアップフリーズ対応パッチ くらい。 24.3 には既にフルスクリーン実装が入っているので、よく使われているフルスクリーンパッチは外し...