「SSDがなぜか遅い」を招く“パフォーマンス劣化”の原因はこれだ:「Open-Channel SSD」がある意味を考える【中編】
一般的なSSDの場合、読み書きパフォーマンスが幾つかの理由から低下してしまうことがある。パフォーマンスを高める仕組みと併せて、パフォーマンス低下の主な原因を2つ解説する。
SSDはHDDに比べてデータ読み書きのパフォーマンスに優れるストレージだが、一般的なSSDの場合は本来の能力を引き出せずに読み書きパフォーマンスが低下してしまうことがある。SSDのパフォーマンスを高める仕組みと併せて、何がSSDのパフォーマンス劣化を招く原因になるのかを解説する。
SSDが遅くなる“2つの原因”はこれだ
併せて読みたいお薦め記事
連載:「Open-Channel SSD」がある意味を考える
SSDの容量増大も要注目
一般的なSSDの場合、コントローラーが内部の制御を自動で実行するため、ユーザーがパフォーマンスを細かく最適化することはできない。それに対して「Open-Channel SSD」は、コントローラーではなくホストマシン(サーバ)のOSが制御タスクの一部を担うことで、パフォーマンスの最適化が可能になる。
ここでは「ガベージコレクション」と「スケジューリング」を例にして、SSDのパフォーマンスが落ちる原因と、それを解消するOpen-Channel SSDの仕組みを見てみよう。
ガベージコレクション
ガベージコレクションとは、部分的に使用されている複数のブロック(データの記録領域をまとめた単位)から有効なページ(データの記録領域をまとめた単位)を別のブロックに移動し、元のブロックを消去することで、NAND型フラッシュメモリ(SSDの記録媒体)のブロックを解放する仕組みだ。ガベージコレクションにより、新しく書き込むデータ用の空き容量を確保できる。
Open-Channel SSDでホストマシンがガベージコレクションを制御する場合、ガベージコレクションのために許容できるタイミングを、アプリケーションがホストマシンに通知する。これにより、ガベージコレクションがアプリケーションのパフォーマンスに与える影響を最小化できる。
ガベージコレクションは、SSDの処理に過度に干渉しないようにバックグラウンドで実行する。しかし、一般的なSSDでは、ガベージコレクションが通常の処理の妨げになることが多い。一般的なSSDではコントローラーがホストマシンからのアクセスパターンを把握できないため、最適なタイミングを推測してガベージコレクションを実行する必要がある。
スケジューリング
Open-Channel SSDでは、アプリケーションがワークロードの変化をホストマシンのスケジューラーに事前に通知できる。ワークロードの変化の例としては以下がある。
- 書き込みが多い状態から読み取りが多い状態への移行
- 読み取りが多い状態から書き込みが多い状態への移行
- シーケンシャルリード(連続的なデータの読み書き)からランダムリード(ランダムなデータの読み書き)への変化
- ランダムリードからシーケンシャルリードへの変化
アプリケーションがしばらくアイドル状態になる予定がある場合にも、アプリケーションはスケジューラーに通知できる。アイドル状態の間にバッファ(一時的な記憶領域)からデータをNAND型フラッシュメモリに書き込んだり、ガベージコレクションを実行したりできる。
一般的なSSDでは、ホストマシンがアプリケーションを実行する。その間、SSDのコントローラーはホストマシンからのランダムなアクセスリクエストの合間に、さまざまな制御タスクを処理するタイミングを見つける必要がある。制御タスクとしては例えば以下がある。
- ガベージコレクション
- バッファ内のデータのフラッシュメモリへの書き込み
- 未使用ブロックの消去
これらの制御タスクは、同じNAND型フラッシュメモリで実行中のアプリケーションからの読み書きタスクと干渉する。ホストマシンのアプリケーションの動作とSSD内の制御タスクが全く連携していないからだ。
一般的なSSDにおいて、この問題に対する解決策は、ホストマシンからのアクセスパターンを推測し、それに合わせたスケジューリングを実行する以外にない。
次回は、Open-Channel SSDの活用状況に焦点を当てる。
TechTarget発 世界のインサイト&ベストプラクティス
米国Informa TechTargetの豊富な記事の中から、さまざまな業種や職種に関する動向やビジネスノウハウなどを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.