web-dev-qa-db-ja.com

SSDで順次書き込みがランダム書き込みよりもパフォーマンスが優れているのはなぜですか

[〜#〜] lba [〜#〜](論理ブロックアドレス)は[〜#〜] ftl [〜#〜]に実装されたマッピングテーブルですSSDsで論理ページと物理ページ/ブロックを一致させます。ほとんどのSSDs(少なくともそれらが空の場合)は、物理アドレスを論理ページと同じ順序で保持していると思います1(物理アドレス0は論理アドレス0、1は1などにマッピングされます)。

ページが変更されると[〜#〜] ssd [〜#〜]コントローラーが更新されたページをキャッシュにコピーし、ページを変更して、古いページを 'none valid/stale '次に、新しい場所を別の場所に書き込み、LBAを更新します。

そのため、物理アドレスが論理アドレスと一致していても、2、3回書き込みを行うと、この順序はめちゃくちゃになります。

順次書き込みがランダム書き込みよりもパフォーマンスが優れているのはなぜですか?

編集

順次書き込みとランダム書き込みの間のパフォーマンスの欠如は、ブロックサイズやキューの深さに関係ありませんでした。

7
ELH

Seagate による合理的な簡潔な説明で、ランダム書き込みと順次書き込みのSSDパフォーマンスの違いにガベージコレクションがどのように影響するかについて説明します。

...ガベージコレクションの必要性はSSDのパフォーマンスに影響します。これは、「フル」ディスク(初期空き領域または容量が少なくとも1回満たされているディスク)への書き込み操作は、ガベージコレクションプロセス。ガベージコレクションはブロックレベルで発生するため、シーケンシャルデータとランダムデータのどちらが関係しているかによって、パフォーマンスにも大きな違いがあります。順次ファイルはブロック全体を埋めるので、ガベージコレクションが大幅に簡素化されます。ランダムデータの場合、状況は大きく異なります。

ランダムデータが書き込まれると、多くの場合複数のアプリケーションによって、ページがフラッシュメモリのブロック全体に順次書き込まれます。
問題は次のとおりです。この新しいデータは、他のブロックにランダムに分散された古いデータを置き換えます。これにより、無効なページの潜在的に多数の小さな「穴」が、まだ有効なデータが含まれているページに散在します。これらのブロックのガベージコレクション中に、すべての有効なデータを別のブロックに移動(つまり、読み取りと再書き込み)する必要があります。
これとは対照的に、順次ファイルが置き換えられると、ブロック全体が無効になることが多いため、データを移動する必要はありません。シーケンシャルファイルの一部がブロックを別のファイルと共有する場合がありますが、平均してそのようなブロックの約半分だけを移動するだけでよく、ランダムに書き込まれたブロックのガベージコレクションよりもはるかに高速になります。 ...

9
HBruijn

もう1つの説明は、シーケンシャルI/Oがすべてのレベルで合体しやすいことです。一般に、同じデータを送信するときにオーバーヘッドは少なくなりますが、使用するI/Oは少なくても大きくなります。したがって、結合することで、より高いスループットに到達できます。使用しているカーネルがシーケンシャルI/Oをより大きなI/Oにバッチ処理しないことを証明する必要があるため、ランダムI/Oに必要なものと比較して、オーバーヘッドが削減され、パフォーマンスが向上します。

1
Anon