2006年9月21日

ディスクIO性能(6) - PDC20270上でのRAID0の性能

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

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

# lspci -s 04:09.0 -v
04:09.0 RAID bus controller: Promise Technology, Inc. PDC20270 (FastTrak100 LP/TX2/TX4) (rev 02) (prog-if 85)
        Subsystem: Promise Technology, Inc. FastTrak100 TX2
        Flags: bus master, 66MHz, slow 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]
        Memory at fdbf0000 (32-bit, non-prefetchable) [size=64K]
        Expansion ROM at fda00000 [size=64K]
        Capabilities: [60] Power Management version 1
でも、lspci の出力のFlags に 66Mhz とあるがこれは何を意味するのだろう?

測定

測定は、md と dmraid のそれぞれで下記構成の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/hde

/dev/hde:
 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=5LAJRH73
 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:   3836 MB in  2.00 seconds = 1922.01 MB/sec
 Timing buffered disk reads:  130 MB in  3.03 seconds =  42.87 MB/sec

ファイルシステム

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

# dumpe2fs -h /dev/md0
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          568932f0-35b2-4279-b3b9-b99195504002
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:              39078016
Reserved block count:     1953900
Free blocks:              38416481
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:       Wed Sep 20 12:44:07 2006
Last mount time:          Wed Sep 20 12:46:16 2006
Last write time:          Wed Sep 20 12:46:16 2006
Mount count:              1
Maximum mount count:      20
Last checked:             Wed Sep 20 12:44:07 2006
Check interval:           15552000 (6 months)
Next check after:         Mon Mar 19 12:44:07 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:      d2636c25-d719-4b86-919b-5f4fe97ff8ec
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
PDC20270
md-raid0(1u)     1G           37924   8 18322   4           47218   4 169.1   0
md-raid0(2u-2ch) 1G           48279  11 26484   5           79672   7 267.5   0
md-raid0(2u-1ch) 1G           32114   8 13687   2           28586   2 166.0   0
md-raid0(3u)     1G           39956  11 18437   4           41578   3 249.1   0
md-raid0(4u)     1G           49674  11 23152   5           50915   4 285.8   0
md-linear(4u)    1G           38235   8 18221   3           47197   4 169.6   0

dm-raid0(1u) 1G 38826 12 18584 4 47295 3 174.2 0 dm-raid0(2u-2ch) 1G 52870 17 22017 5 55090 5 264.0 0 dm-raid0(2u-1ch) 1G 34679 10 12061 2 24026 2 168.0 0 dm-raid0(3u) 1G 42278 13 17619 3 40336 4 249.5 0 dm-raid0(4u) 1G 51228 18 22073 5 50590 5 286.2 0 dm-linear(4u) 1G 38215 11 18678 4 47264 4 171.1 0

blog20060921-RAID0-PDC20270

  1. mdの場合、1unit に比べてRAID0性能向上の傾向が見られるのは 2units(2channel)の readのみで、それ以外は何かの制限がありそうである。
  2. md と dmraid の傾向の違いは、2units(2channel)のread以外は無い。
  3. 2units(2channel)のwriteの性能向上が思ったほど無い。
  4. IDEの1channelに2台ぶら下げると性能向上は望めないと言われているが、 実際の2units(1channel)の性能劣化は予想以上である。
  5. 4unitsは、2units(1channel) からRAID0の性能向上の傾向が見られる。
  6. 単体HDDとraid0(4units)とlinear(4units)の性能がほぼ変わらない。

全体的にHDDの台数に性能がスケールしていない。PCIバスの制約は 133MB/secであり、 約80MB/secの性能が出る場合もあり、PCIバスに制限されているのでは無さそうである。 単純に考えると、IDEの1チャンネルに2台ぶらさがる事が、IDEバスかチップかLinuxのPDC20270用ドライバかで並列化を妨げ「劣化」させる要因になっているようである。

なんとも納得がいかない結果だなぁ。

ベンダー提供のドライバとの比較も必要かも。。。PATAでそこまでするかなぁ。

結論

PATAでは1チャンネルに複数のデバイスをぶら下げるとRAIDの性能向上を妨げるので、1チャンネル1台にしよう。 mdもdmraidも大きな違いが無いが、このRAIDカードではシーケンシャルなreadの性能はmdの方が高かった。PCI(32bit/33Mhz)でぶら下がる RAIDカードに過度に期待しないでおこう。

シーケンシャルI/OだけでなくランダムI/Oの性能評価が出来るようになろう。

0 件のコメント:

Cocoa Emacs 24.3 構築 (2013/03版)

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