67

次の場合のシーケンシャル書き込みとランダム書き込みの違いは何ですか:- 1) ディスク ベースのシステム 2) SSD [フラッシュ デバイス] ベースのシステム

アプリケーションが何かを書き込み、情報/データをディスク上で変更する必要がある場合、それがシーケンシャル書き込みかランダム書き込みかをどのように知ることができますか。この時点まで、書き込みは「シーケンシャル」または「ランダム」として区別できません。書き込みはバッファリングされ、バッファをフラッシュするときにディスクに適用されます。

間違っている場合は修正してください。

4

1 に答える 1

129

ファイルへのシーケンシャル書き込みとランダム書き込みについて話すとき、一般的には、中間シークなしの書き込み (「シーケンシャル」) と、シーク-ライト-シーク-ライト-シーク-ライトなどのパターンを区別しています ( "ランダム")。

この区別は、各ディスク シークに約 10 ミリ秒かかる従来のディスク ベースのシステムでは非常に重要です。同じディスクに連続してデータを書き込むには、MB あたり約 30 ミリ秒かかります。したがって、100MB のデータをディスクに連続して書き込む場合、約 3 秒かかります。しかし、それぞれ 1MB のランダムな書き込みを 100 回行うと、合計で 4 秒かかります (実際の書き込みに 3 秒、すべてのシークに 10ms*100 == 1 秒)。

各ランダム書き込みが小さくなるにつれて、ディスク シークに支払うペナルティが大きくなります。1 バイトのランダムな書き込みを 1 億回実行するという極端な場合でも、実際のすべての書き込みで 3 秒かかりますが、11.57 日分の書き込みが必要になります。したがって、明らかに、書き込みがシーケンシャルかランダムかの程度が、タスクの完了にかかる時間に実際に影響を与える可能性があります。

フラッシュに関しては、状況が少し異なります。フラッシュを使用すると、移動しなければならない物理ディスク ヘッドがなくなります。(これが、従来のディスクの 10 ミリ秒のシーク コストが発生する場所です)。ただし、フラッシュ デバイスのページ サイズは大きくなる傾向があります (ウィキペディアによると、最小の「典型的な」ページ サイズは約 512 バイトです)。、および 4K ページ サイズも一般的のようです)。したがって、少数のバイトを書き込んでいる場合でも、ページ全体を読み取り、書き込んでいるバイトを変更してから、ページ全体を書き戻す必要があるという点で、フラッシュにはまだオーバーヘッドがあります。頭のてっぺんからフラッシュの特徴的な数字がわかりません。ただし、経験則として、フラッシュでは、各書き込みのサイズがデバイスのページ サイズとほぼ同等である場合、ランダム書き込みとシーケンシャル書き込みのパフォーマンスに大きな違いは見られません。各書き込みがデバイスのページ サイズに比べて小さい場合、ランダムな書き込みを行うときにオーバーヘッドが発生します。

上記のすべてについて、アプリケーション層では多くのことが隠されていることは事実です。カーネル、ディスク/フラッシュコントローラーなどにはレイヤーがあり、たとえば、「シーケンシャル」書き込みの途中で明らかでないシークを挿入する可能性があります。しかし、ほとんどの場合、アプリケーション層でシーケンシャルに「見える」ように書く (シークなし、連続 I/O が多い) と、シーケンシャル書き込みのパフォーマンスが得られますが、アプリケーション層でランダムに「見える」ように書くと (一般的に悪い)ランダム書き込み性能。

于 2010-03-18T16:41:07.923 に答える