ベンチマークは明確です: ソリッドステートドライブ あなたがそれらを埋めるにつれて減速します。ソリッドステートドライブをほぼ容量まで満たすと、書き込みパフォーマンスが劇的に低下します。その理由は、SSDとNANDフラッシュストレージの動作方法にあります。
ドライブを容量まで満たすことは、 ソリッドステートドライブで絶対にすべきでないこと 。ほぼフルのソリッドステートドライブでは、書き込み操作がはるかに遅くなり、コンピューターの速度が低下します。
空のブロックと部分的に満たされたブロック
ソリッドステートドライブにファイルを書き込むと、空のブロックが検索されていっぱいになります。空のブロックへの書き込みは、可能な限り最速の書き込み操作です。そのため、新しいオペレーティングシステム(Windows 7以降)はTRIM機能をサポートしています。この機能は、オペレーティングシステムでファイルを削除するとすぐに、ソリッドステートドライブからファイルのデータを自動的に削除します。これは、磁気ハードドライブとは動作が異なります。 削除されたファイルのビットはハードドライブ上にあります 。
ソリッドステートドライブ上に置かれることはありません— TRIMはブロックが空になることを保証するため、SSDは将来空のブロックに新しいデータをすばやく書き込むことができます。すでに書き込まれたセクターへの書き込みは、メカニカルハードドライブの空のセクターへの書き込みと同じくらい高速ですが、ソリッドステートドライブはブロックに書き込む前にブロックを消去する必要があります。
NANDフラッシュメモリは、256KBブロック内の4KBページにデータを書き込みます。部分的に満たされたブロックにページを追加するには、ソリッドステートドライブはデータを書き戻す前にブロック全体を消去する必要があります。
ソリッドステートドライブがいっぱいになると、使用できる空のブロックはますます少なくなります。その代わりに、部分的に満たされたブロックがあります。ソリッドステートドライブは、これらの部分的に満たされたブロックに新しいデータを書き込むだけではなく、既存のデータを消去します。ソリッドステートドライブは、単純な書き込み操作の代わりに、ブロックの値をキャッシュに読み込み、新しいデータで値を変更してから、書き戻す必要があります。ファイルの書き込みには多くのブロックへの書き込みが含まれる可能性が高いため、これにより大幅な遅延が発生する可能性があることに注意してください。
TRIMは部分的に満たされたブロックを統合しません
ドライブを容量いっぱいまたは容量に近い値までいっぱいにすると、ファイルを削除した後、部分的にいっぱいになったブロックが多数発生する可能性があります。 TRIMコマンドは、ファイルが削除されたときにファイルデータを削除するようにソリッドステートドライブに指示するだけです。ドライブに何らかのクリーンアップ操作を強制することはありません。
つまり、ファイルを削除する前にソリッドステートドライブを容量いっぱいに満たすと、部分的に満たされたブロックが多数発生する可能性があります。ドライブは、これらの部分的に満たされたブロックを完全なブロックに統合し、空のブロックを解放するために邪魔になりません。ドライブはまだ部分的に満たされたブロックでいっぱいになり、書き込みパフォーマンスが低下します。
オーバープロビジョニングとガベージコレクション
消費者がソリッドステートドライブをいっぱいにしてパフォーマンスが大幅に低下するのを防ぐために、SSDメーカーはこれに対抗するために努力しています。
民生用ソリッドステートドライブは、多くの場合、フラッシュストレージ全体の約7%を確保し、ユーザーが使用できないようにします。これは「オーバープロビジョニング」と呼ばれます。ドライブに追加のストレージハードウェアが追加されますが、使用可能なストレージとしてコンピューターに表示されません。スペア領域により、ドライブが完全にいっぱいになることはありません。書き込みパフォーマンスを安定させるのに役立つ予備の容量が常にあります。
各ソリッドステートドライブのコントローラーには、この問題を軽減するためのガベージコレクションアルゴリズムがあります。ドライブがいっぱいになると、部分的に満たされたブロックを探して統合を開始し、空のブロックをできるだけ多く解放します。さまざまなソリッドステートドライブが、ドライブのコントローラーに応じて、さまざまな時間としきい値でこれらの操作を実行します。
ベンチマークの証拠
Anandtechはさまざまなベンチマークを実行しました ソリッドステートドライブのスペア領域とその書き込み操作パフォーマンスの一貫性との関係を引き出すために、さまざまなドライブを使用します。空のドライブをいっぱいにすると、プロセスの非常に早い段階で高い書き込みパフォーマンスが見られ、書き込み操作がドライブをいっぱいにし続けると大幅に低下しました。
ドライブに十分な空きブロックを確保しておくと、ドライブに常に十分な空のブロックが用意されている必要があるため、パフォーマンスの一貫性を維持するのに役立ちました。
彼らは、「これらの[consumer]ドライブのスペア領域が25%に達すると、最小パフォーマンスが大幅に向上する」ことを発見しました。彼らの最終的な推奨事項は、「パフォーマンスの一貫性と容量のバランスをうまく取りたい場合は、[your drive’s]容量の約75%のみを使用することを計画する」ことでした。
ソリッドステートドライブを使用している場合は、その容量の75%を超えて使用しないようにする必要があります。必要以上のストレージを備えたより大きなドライブを購入すると、常に一貫した書き込みパフォーマンスが保証されます。幸い、SSDは徐々に安くなっているので、これはかつてほど高価ではありません。
画像クレジット: ウィキメディアコモンズのミュージックソーター 、 FlickrのSimonWüllhorst