FastTrack100 TX2 (PDC20270) に4台のHDDを繋いで幾つかのベンチマークを取ってみた。
環境
毎度のこと検証環境は、
- Athlon64X2 3800+ (但し、Single CPUとして制限)
- M2NPV-VM(GeForce6150+nForce 430MCP)
- メモリは512M(カーネルパラメータで制限)
- システム用のHDDで Segate ST3500630AS, SATA
- Debian/etch Linux-2.6.16
- FastTrack100 TX2 (PDC20270)
- 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)を使い測定する。
- RAID0 のHDDx1台(1u)。
- RAID0 のHDDx 2 台(2u-2ch)。但し、IDEの2チャンネルにそれぞれにHDDを割り当てる。
- RAID0 のHDDx 2 台(2u-1ch)。但し、IDEの1チャンネルのみにHDDを割り当てる。
- RAID0 のHDDx 3 台(3u)。IDEの片方のチャンネルに2台で一方に1台を割り当てる。
- RAID0 のHDDx 4 台(4u)。IDEの両方のチャンネルに2台を割り当てる。
- 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
- mdの場合、1unit に比べてRAID0性能向上の傾向が見られるのは 2units(2channel)の readのみで、それ以外は何かの制限がありそうである。
- md と dmraid の傾向の違いは、2units(2channel)のread以外は無い。
- 2units(2channel)のwriteの性能向上が思ったほど無い。
- IDEの1channelに2台ぶら下げると性能向上は望めないと言われているが、 実際の2units(1channel)の性能劣化は予想以上である。
- 4unitsは、2units(1channel) からRAID0の性能向上の傾向が見られる。
- 単体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 件のコメント:
コメントを投稿