SSDはその性質上、trim命令を使用せず未使用領域が数パーセントになると性能が極端に悪くなる。特に書き込みに関しては格段に性能が下がる。どれだけ性能がおちるかのテストをしたサイトがあるので紹介する(脚注1)。
SSD側で管理する未使用領域を増やすことにより効率よく書き込みが出きるようになる。しかし、それにはOS側から使っていない領域をtrim命令を使い開放しなくてはならない。
Linux Kernel 2.6.28以降にはブロックデバイスのドライバには使わなくなったブロックに対しtrim命令を発行し、その領域をいつでも使えるようにする機能がついた。ユーザ側で使うにはシステムコールioctlでBLKDISCARDを指定する。mke2fsは、パーティションをフォーマットするコマンドだが、最近のものには-Kオプションというのがついている。これは”Keep, do not attempt to discard blocks at mkfs time“だそうだ。つまりデフォルトでblockをdiscard(破棄)しているという意味らしい。調べてみると2009年には BLKDISCARD を使うパッチがメーリングリストに投稿されていた。
続きを読む