- 締切済み
ストライピングしたディスクのIOのパフォーマンスについて質問です。
ストライピングしたディスクのIOのパフォーマンスについて質問です。 ストライピングなど、複数ディスクにデータを分散することでディスクIOのパフォーマンスが向上すると聞くのですが、どうしてでしょうか。 SCSIなどのバス上では、1つのディスクからのデータしか転送できないと思うのですが、そうすると1つのディスクから読み取ったデータしかバス上を転送できないことになります。 複数ディスクが同時に読み込み、ディスク上のどこかに読み取ったデータを保持するバッファがあるのでしょうか。 単位時間の ディスクIOのデータ量 < バス上の転送速度 という前提で話しています。 以上、もしわかる方いらっしゃったらよろしきお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
#3 に補足というかちょっと訂正というか, そんな感じ: まず P-IDE についてはあなたの言われる通りです. こいつは「コントローラがデバイスに対しデータを要求してからデータを実際に受け取る」までず~っとデバイスがバスを占有し続けます. つまり「1つのディスクからのデータしか転送できない」ということになります. 「ハードディスクと CD-ROM ドライブを同じケーブルにつないじゃいけないんだよ」という昔話. 一方 SCSI は高価なだけあってそこまでアホではありません. コントローラがデバイスに対しデータを要求するのは当然同じですが, 時間がかかると思ったデバイスはディスコネクトを発行することによりバスの占有を放棄することができます. これでバスの占有が解除されるので, コントローラは別のデバイスに命令を発行することができます. ディスコネクトしてデータを準備したデバイスは, 今度はリコネクトを要求します. このリコネクト要求をコントローラが受理することで改めてデバイスがバスを占有し, 要求されたデータをコントローラに引き取ってもらいます. つまり, 同じバス型のトポロジであっても P-IDE と SCSI では全く違います. ちなみに SCSI の場合データバスがデバイスセレクトを兼ねているので, (コントローラを含めて) 「データバスの本数と同じだけのデバイス」をつなぐことができます>#3.
- 0909union
- ベストアンサー率39% (325/818)
>SCSIなどのバス上では、1つのディスクからのデータしか転送 これはどう言う意味でいっているのでしょうかね。SCSIはデジーチェーンができるので、また、パラレル伝送なので、複数のディスクからの同時転送が可能です。転送順番と言う点では、どんな通信方法も1つ一つ(パケットなど)別なので、そのストレージの1パケットの単位、1セクターの単位で、単独で送信されるので、1つ一つ個別です。また、パラレルとは、送受信が別ケーブルと言うこと(送ったものに対してエコーバックがあり、そのトランザクションと言えば、確かにその通信中では1つのディスクとでしか通信していないことになりますが)。 実際に、SCSIで遅い、ファーストSCSI以前の物を使い、その時代のディスクで確かめると、デジーチェーンでつながれたディスクからぞれぞれ1GBのデーターのコピーを全て別ディスクに行うと、見かけ上同時にコピーが始まり、ほぼ同時にコピーが終わります。しかし、よく進捗を確認すると、どれかが、進捗があると、どれかがとまっています。遅いディスクほど分かります。 これを私は10年以上前のSun(SS5 or Ultra10)のマシンで確認しています。現在のULTLA320では、ほとんどわかりません。 >そうすると1つのディスクから読み取ったデータしかバス上を転送できないことになります。 なので、この仮定自体が間違いになります。これは、1セクター(1パケット)のデーターの流れを指しているだけで、全く持って誤解しています。 たぶん、シリアルバス(S-ATA)と、混同しているのでしょう。データー転送には必ず転送されるデーターにヘッダーと終端があり、これは、パラレル転送もシリアルも変わりませんが、シリアルでは、1ケーブル(1コンセント)には、1つのデバイスしかつけることしかできません。これだと言われるとおり、「1つのディスクしか転送できない」となります。 ではなぜ、同時に別ディスクからの転送が可能か? それがコントローラーの役目です。 コントローラー=信号機ですね。交通整理をする以上、当然「待ち」状態が発生するわけだけど、確かにバッファーと呼ばれる記憶域(パソコン側の)を使う場合が多いですが、再送される場合も多いです。この再送に、ディスクになどに備わっているメモリーが有効に働きます。 >ディスクIOのパフォーマンスが向上すると聞くのですが ディスクIOのパフォーマンスが向上することはありません。理論値を超えることはありません。「ディスクIO」の意味がディスクの転送速度とするなら、ありえますが、IOの向上はもっと別なところにあります。 今現在のS-ATAディスクのボトルネックは、ディスク内の転送速度が向上していないことにあります。なので、S-ATA3になっても理論値通りの2倍(S-ATA2の)にならないのも、そのせいです。 ディスク内を高速にするには、回転数を上げるか(ワシントンデジタルみたいに)、ピックアップを複数にするとか、プラッターを大きくするか、ブレイクスルーする仕組みが必要です。 と言うことで、質問の趣旨自体、質問者がかなり誤解している点にあり、そこの誤解をとかないと、なぜストライピングが早くなるか、理解できないと思います。 まとめをすると、データー転送は、コントローラーで転送をコントロールしているので、途中の経路での伝送方式に関係なくコントローラーの数やパフォーマンスに影響されます。 例えばパラレル時代で、1つのケーブルで2のディスクをつなげる事ができました。SCSIだと60個とか(正確に覚えていない)1つのケーブルでつなげる事ができた。その1つのケーブルにつながっている、ディスク同士をストライプにするより、別ケーブるとの組み合わせで、初めてその効果がでる。 それは、コントローラーが別になるので、分散がそこで初めて達成されるため。 S-ATAでも同じです。S-ATAではSAS(マルチレーン)と呼ばれる方式のインターフェースを使ってRaidを構築するのがもっとも効率がよいとされています。このケーブルはS-ATAケーブルを4本以上束ねているので、同時に4つの情報が伝送されることになり、当然コントローラーらもディスク分あるので、全て完全分散になります。 1本のケーブルで行う場合は、ポートマルチプライヤ対応の物を使うことになる。Raidカードでコントローラーの置き方が違うので、値段が高いほど、分散化の質が高いことを示しています(バッファーが多いとか)。
- nnori7142
- ベストアンサー率60% (755/1249)
お尋ねの件ですが、RAID0構成の場合、複数のDisk・例えばHDD1・HDD2と言う構成・DATA1~4の連続しているデータがあったと仮定しますと、DATA1をHDD1、DATA2をHDD2、DATA3をHDD1、DATA4をHDD2といった形へデータ格納する方式ですが、各Diskに同時平行して書き込み・読み出し可能にする形式です。複数の物理Diskへ同時に書き込みしますので、1台のDiskに連続データを順次書き込みするより、Disk台数分時間短縮出来る仕様となっております。勿論それはDisk台数を増やすのに比例し、レスポンスも向上するように設計されていますが、冗長性をまったく備えていないことですね。 データーのバッファについては、RAID機能・基板上のCPU・メモリにて管理するようになっており、それはRAIDコントローラー・基板によりレスポンスが違います。 例えば、A社のA・RAIDボードは、RAIDコントローラーに1.2GHzデュアルコアチップ・メモリにDDR2-512MBと言った構成の中で、x8 PCI Express接続にて動作するのに対し、B・RAIDボードは800MHz デュアルコア RAIDチップ・DDR2-128MBメモリと言った構成の中で動作するように設計されていますが、勿論前者の方がRAID制御・データ処理が高速といった形となります。 一番重視しますのが、上記の中のバス接続仕様となりますが、I/FがPCI Expressなのか、PCIバスなのか、PCI-Xなのかでデータレートが変わりますので、PCI Expressが1レーンあたり2.5Gbpsといったレートに対し、PCIバス(32ビット/33MHz)の3倍から4倍といった理論数値、PCI-X規格については、バスクロック133Mhzとレート数値上は1.06GB/sといった理論数値がありますが、そういったバス仕様の性格も影響しますね。
- e3tatsu
- ベストアンサー率51% (78/151)
バッファというかキャッシュですね. キャッシュは転送遅延を隠蔽するためにコンピュータのあらゆる部分で使われています. キャッシュも重要ですが,より重要なのは質問者様も仰っている 「ディスクIO速度 < バス上の転送速度」です. ストライピングでパフォーマンスが向上するのはこの式が成り立つからです. 逆に言えばこの式が不成立になるまではストライピングを構成するディスク台数の増加によるパフォーマンスの向上が見込めることになります. 例えば,PCI Express x16のデータ転送速度は全二重8GiB/sですが, これに対してディスクIOはSSDでも最良条件で0.25GiB/s,ランダムアクセスではこの数十分の1程度しか出ません.