分散ファイルシステムを構築するときに、ノードのベンチマークを行っています。ファイルは多くのノードに分散および複製されるため、ノード自体でraid0を使用しています。ただし、パフォーマンスの数値がおかしいので、StackOverflowコミュニティがその理由を理解するのに役立つかどうか知りたいです。私はベンチマークツールとしてfioを使用しています。バージョン1.38は機能せず、バージョン1.59または1.60を使用する必要があることに注意してください。
これが私のfio設定ファイルです:
[global]
directory=/mnt/gluster
lockfile=readwrite
ioengine=libaio
iodepth=8
rw=randrw
nrfiles=200
openfiles=30
runtime=900
[file]
filesize=16-8k/8M-512M
size=1GiB
ソフトウェアRAIDを使用したraid0の場合、次の結果が得られました(基本事項を抜粋)。
read : io=285240KB, bw=324535 B/s, iops=79 , runt=900011msec
write: io=283532KB, bw=322592 B/s, iops=78 , runt=900011msec
ソフトウェアRAIDを使用したraid1で、次の結果が得られました。
read : io=683808KB, bw=778021 B/s, iops=189 , runt=900000msec
write: io=488184KB, bw=628122 B/s, iops=153 , runt=795864msec
シングルディスクのパフォーマンスは、raid0のパフォーマンスを上回っています。
read : io=546848KB, bw=622179 B/s, iops=151 , runt=900018msec
write: io=486736KB, bw=591126 B/s, iops=144 , runt=843166msec
4kエクステントの4つのディスクにまたがるLVMストライプ:
read : io=727036KB, bw=827198 B/s, iops=201 , runt=900007msec
write: io=489424KB, bw=604693 B/s, iops=147 , runt=828800msec
ハードウェアRAID0(HighPoint RocketRaid 2470)
read : io=326884KB, bw=371918 B/s, iops=90 , runt=900008msec
write: io=328824KB, bw=374125 B/s, iops=91 , runt=900008msec
上記の最初の4つの結果は、マザーボードのSATAコントローラーでのみ実行されていることに注意してください。ただし、RocketRaidカードに移動した後、ソフトウェアRAIDで結果を再現しました。これらは1TBのSATAドライブです。マルチスレッドテストを実行すると、ほぼ同じ結果が得られました。 RAID0の実行速度がこれほど遅くなる理由はありますか?シングルドライブやRAID1よりも優れたランダムI/Oのパフォーマンスを提供すると思いました。
フォローアップ:Scalable InformaticsのJoeからのいくつかの提案に基づいて(ナイスガイ、彼のものを購入してください!)、より深いキューとよりランダムなブロックサイズを使用するようにテストを変更しました。
[global]
directory=/mnt/glusterfs
lockfile=readwrite
ioengine=libaio
iodepth=32
rw=randrw
numjobs=8
[file]
filesize=16-8k/8M-512M
blocksize_range=64k-1M
size=1GiB
nrfiles=50
openfiles=8
runtime=900
そして最終的な結果は、HighPoint RocketRaid2740カードが最悪だということです。
RocketRaidカードに接続されたパフォーマンスは、全体的に遅くなりました。
私はこの質問を開いたままにしておきます-テストのために来週か2週間以内にRAIDカードの新しいスレートを入手します、そして私はまだ単一ディスク以上のパフォーマンスを得るための最適化のヒントを探しています、完全に答えられていないようです。
書き込みまたは読み取りデータが単一のディスクをホットスポットしているストライプサイズの問題が発生している可能性があります。詳細については、 ソフトウェアRAIDハウツー を参照してください。 iostat の出力を見ると、これが当てはまるかどうかを確認できます。
線形アクセスのパフォーマンスを確認する場合は、ベンチマークに「hdparm -t」またはddを使用してみてください。これにより、単一ディスクのパフォーマンスの約2倍のパフォーマンス数値が表示されます。
シングルドライブやRAID1よりも優れたランダムI/Oのパフォーマンスを提供すると思いました。
いいえ、ランダムに検索しているブロックがストライプサイズよりも大きい場合は、ほぼ1台のドライブの速度である必要があります。それでも、単一のドライブよりも悪い結果を説明することはできません。
ウィキペディア から。
ファイルのコピーやビデオの再生など、ストライプサイズよりも大きい読み取りと書き込みの場合、ディスクは各ディスクの同じ位置をシークするため、アレイのシーク時間は単一のドライブのそれと同じである。データベースアクセスなど、ストライプサイズよりも小さい読み取りと書き込みの場合、ドライブは独立してシークできます。