Tips

SSDはTRIMが重要

日付2011/02/14
ID76257 (英語原文参照)
バージョンv11
プラットフォームMac/Win

4DシステムにSSDドライブを導入する場合, TRIMというATAコマンドの目的を理解することが大切です。TRIMの概要は, 下記のように説明することができます。

SSDは, 無数のブロックで構成されており, それぞれのブロックには無数のページが存在します。SSDは, 単一のページを読むことができますが, 削除ができるのはブロック単位です。一枚のページを削除したい場合, SSDは単一のブロックを一旦メモリに読み込み, ページを書き換えてから, ブロックを書き込まなければなりません。しかし, 実際にはOSの管理テーブルからそのファイルに関する情報が取り除かれるだけであり, ディスク自体からファイルが消去されるわけではありません。

フラッシュメモリの書き込み回数には限界があります。そこで, SSDにはいつも同じセルばかりが用いられないよう, 大きなデータを多数のブロック(通常は512KB以下)に分離し, ディスク全体に分散して書き込むような仕組みになっています。いわば意図的にディスクの断片化を起こしているわけですが, SSDには機械的な構成部品がなく, シークタイムは問題ないので, ディスクの断片化は問題ではありません。

いずれにしても, SSDは容量いっぱいに使用しなくても, 読み書きを繰り返すうちに, SSDのブロックはすべて何らかのデータが書き込まれた状態となるわけであり, そのデータには, 過去に削除されたファイルも含まれることになります。そのようなブロックに対して書き込みを実行する場合, まずそのブロックを読み込み, 削除されたデータを消去してからそのブロックに書き込むことが必要になるので, 書き込みの行為が実際には読み込み+編集+書き込み処理となり, フォーマット済みの領域に書き込んでいた頃と比較してパフォーマンスが落ちることになります。

TRIMというATAコマンドは, そのようなパフォーマンスの低下を軽減するために考案されました。OSとドライブの両方がTRIMコマンドをサポートしていれば, OSは削除されたページに関する管理情報をドライブに伝えることができるので, SSDは前述したような読み込み+編集+書き込みを実行する必要がなくなり, 直接, 変更を書き込めるようになります。

この種のパフォーマンス低下は, ひとたびすべてのブロックが使用中のページを含むようになった時点で止まります。OSまたはSSDがTRIMをサポートしていない場合, パフォーマンスは使用開始直後の65-70%程度まで低下したところで落ち着くと言われています。結局のところ, SSDがHDDよりもはるかに高速な記憶媒体であることには違いありません。

なんらかのTRIMが存在しない限り, こうしたパフォーマンスの低下を解消するにはドライブを再フォーマットするしか方法がありません。無論, フォーマットを実施した直後より, パフォーマンスの低下がまた始まります。