Microsoft ResearchのTechnical ReportにSSDのパフォーマンス・コストに関する詳細な調査記事があった。(まだ書き途中)
http://research.microsoft.com/apps/pubs/default.aspx?id=76522 (リンク先からPDFがダウンロードできる)
12ページもあってきっちりとは読んでないのだが、ざっくりとメモを。主語が省略されている部分はSSDのことです。
注意:まだ大事な部分を読めていません。
-
-
- -
-
1章
- バイト単位のコストが1〜3桁下がれば完全に置き換わることになるが、完全な置き換えを待つまでもなく、キャッシュ層として使うのであれば短中期的にも魅力的な選択肢になる。
- キャッシュ層での利用では25%程度の性能向上で、現状の価格でも10%程度のコストメリットがある。
- SSDはwrite-ahead log に使うのにとても向いている。レスポンスタイムが大事で、大容量、広帯域は求められないから。
- 導入コストが高いので消費電力抑制は十分にペイしない。この点に期待して移行するほどの効果はない。
- 消費電力あたりの容量、パフォーマンスはSATAディスクと大きく変わらない。
- 金銭コストあたりの容量、パフォーマンスはSSDやenterprise disks(SASとか?)よりSATAの方がずっとよい。(信頼性とのトレードオフは当然ある)
2章
SSD
- SATAやSCSIと同じようなインターフェースのblock I/O デバイス。
- 機械動作を伴わないデータアクセスなのでシークタイムが無く高速。レイテンシはディスク装置が数ミリ秒以上かかるのに対し、1ミリ秒以下。
- 現状で購入できるものは全てNANDフラッシュメモリベース。
- 将来的に使われるかもしれないものに磁気RAM (M-RAM)やphase change memory(PCM:Intelが2008年に発表)などがある。
- 比較対象にしているのはNAND のSSDだけだが、他のメモリにも適用可能。
- NANDメモリの弱点
- small in-place updatesが遅い。(書き換え時に64-128KB単位でいったん消去する必要があるため)
- →ブロックインターフェースレベルではランダムアクセスwriteが遅い。
- →remap技術でsequential write に置き換えることで、解消できる。(Agrawal et al. 2008;Birrel et al. 2007;Woodhouse 2001)
- 摩耗する(wear)
- 10,000〜100,000回程度の書き換え寿命がある
- wear-leveling 技術(Gal and Toledo 2005)で、均等に書き込むことで延命
- remap や wear-leveling には小さいながらもオーバーヘッドがある。(追加の書き込みオペレーション、compaction、フラグメンテーション)
エンタープライズ利用での負荷分析(enterprise workload traces)
traceの情報収集はブロックデバイスレベルで行われた(バッファキャッシュのレイヤよりは下で、ストレージレイヤよりは上)
- 14サーバの45ボリューム
- DB、ファイルサーバ、Webサーバ、プリントサーバ等
- 期間は一週間
- RAID1やRAID5
- 1週間で434 million requests, of which 70% were reads(メールサーバを除外)
- メールサーバ
- 期間は1日
- exchange volume はRAID10
- 102disks in exchange volume
- 61 million requests, of which 43 are reads
- OLTPは対象外(残念…)
3章
特にこの辺、訳しにくい部分はすっ飛ばしています。
workloadのパラメータ
- 容量
- ランダムアクセスread
- ランダムアクセスwrite
- ランダムアクセスI/O(read/write混在状況での性能)
- シーケンシャルread
- シーケンシャルwrite
- 可用性
- 信頼性
デバイスのパラメータ
SSDは本来はsequential I/Oや random read に比べるとrandom writeがずっと遅いが、block-level remapping(上で出てきた)やlog-structured file system (Rosenblum and Ousterhout 1991;Woodhouse 2001)で緩和できる。
log-cleaningやremapの並び替え等はバックグラウンド処理で十分に賄えるらしい。
「SSDをキャッシュ層で使う」という構成の内容がここに図示されていた。
要は
- ディスクに対する直接の書き込みは行わず、SSDにWALとして書き込む。
- SSD上のWALから徐々にディスクに書き出す
- READが発生したらまずSSD上のRead Cacheを確認し、HITすればそのままREAD、MISSであればディスクから読む。
- Read CacheはWAL書き込みと同時にSSDに書き込んでおく
という構成だ。いわゆる「ハイブリッドHDD」がやっているような構成を複数台で構成している感じ(Milleret al. 2001; Panabaker 2006)。
今回の測定実験ではこういった処理はブロックレベルで透過的に行われ、ファイルシステムやアプリケーションの変更はない。
SSDとHDDを使った透過的WALは (Narayanan et al. 2008b)を参照。