2

大量のデータ(ギガバイト)を処理するアプリケーションを作成しています。データを複数のハードドライブに分割し、並行して読み取ることを検討しています。どのような制限が発生するのか疑問に思っています。たとえば、4台または8台のハードドライブから並列に読み取ることは可能ですか。ディスクI / Oが制限要因である場合、約4倍または8倍のパフォーマンスが得られます。 ?何に注意すればいいですか?関連するドキュメントへのポインタも高く評価されています-Googleはあまり現れませんでした。

編集:私はRAIDを見てきましたが、パフォーマンスは私が期待していたほど良くありませんでした。私はこれを自分でC/C++で書くことを計画しています。

4

4 に答える 4

2

データを適切に分割し、4 ~ 8 台のドライブから同時に読み取っても、スループットが 4 ~ 8 倍に跳ね上がることはありません。他にも考慮する必要がある要因があります。

  1. アプリケーションでデータを読み取る場合、異なるハードディスクからデータを読み取るためにスレッドが必要になる場合があります。
  2. Windows は、データを hdd に読み書きするオーバーラップ方式とオーバーラップ方式を提供します。それを使用するとスループットが向上するかどうかを確認してください。同じように *nux にも読み取り/書き込みメソッドがあります。
  3. 単一のコア/プロセッサでは、スレッドが並行して実行されているように見えますが、その基礎は順次に実行されます。マルチコアでは、複数のスレッドを並行して読み取ることができますが、通常、何をいつ実行するかは OS によって決定されます。そのため、読み取るスレッドが非常に多いと、パフォーマンスが向上するどころか低下する可能性があります。
  4. ハードディスクの仕様を確認すると、ランダムアクセス時間とシーケンシャルアクセス時間があることがわかります。したがって、データに基づいて、これらのパラメーターを確認することができます。
  5. データを異なるドライブに分割するときは、データを意味のある情報に移入する方法をアプリケーションで同期する必要があることに留意する必要があります。スレッドを使用している場合は、さらにスレッドが同期している必要があります。
  6. データの読み取り/書き込み速度が高い最先端のハードディスクを入手できるかもしれませんが、他のハードウェアが弱点である可能性があります。そのため、ローエンドのマザーボードまたは RAM を使用している可能性があり、最高の速度が得られない可能性があります。
于 2010-01-27T05:38:22.077 に答える
1

実際の RAID を使用しない場合は、少なくとも複数のハード ドライブ コントローラを使用することをお勧めします。そうしないと、パフォーマンスが大幅に向上することはまったくありません。1 つのコントローラーで多数の同時 IO を実行できないため、すぐにボトルネックになります。

于 2010-01-27T05:59:51.257 に答える
0

ドライブの再構成については問題ないようですが、SSD はどうでしょうか。それらは、任意の機械的ドライブの周りでリングを実行します (約 200 GB/秒以上の読み取り、150 GB/秒以上の書き込み)。

データを順番に読み取っていますか、それともランダムに読み取っていますか? あなたは何GBを期待していますか?

于 2010-01-27T05:46:48.407 に答える
0

データストライピングの概念について話しているようです。これは一般的に RAID 実装に使用されます。ほとんどのオペレーティング システムで利用可能なソフトウェア RAID ソリューションの 1 つを調べることができます。利点は、RAIDを有利に使用してパリティを追加できる場合です(データではなくドライブを失う可能性があります)

これにより、自分で対処しなくても RAID の利点が得られます。ドライブ全体に分散されたデータ ファイルを使用して、データベース レベルでも実行できますが、これにより複雑さが増します。

データをより高速にストリーミングできます。ドライブは非常に高速であり、I/O チャネルがより多くを処理できる場合は、それを使用してください。考慮すべきシーク時間もあります...アプリの説明に基づくと、おそらく大したことではありません。

于 2010-01-27T05:36:28.593 に答える