ついにねんがんのSSD(SSDN-ST64B/東芝HG2 OEM)を手に入れて

http://thunk.org/tytso/blog/2009/02/20/aligning-filesystems-to-an-ssds-erase-block-size/

のページとか見ながらSSDの扱い方を実験してるんですが、その後も

- メーカが努力してるから512B/sectorとして使うのでOKだよ
- マテ、チップ1つでも16KB/pageとかなんだからそれに合わせろよ
- いやいや、並列チャネル数分は掛け算して16*16=256KBとかにしろよ
- いやいや、消去ブロックサイズは32pageだから更にx32程じゃないの?

とか諸説あるようで、自分のSSDをどう構成するのが一番よいのか判断付かず困りました。

自分で実験してみると、ストレートに書いた場合の最高性能は256-512KB/block付近で
hdparm -t近く出るので

 並列チャネル論が正しく、かつ、ブロック消去は非同期に行われる。よって
 イレースブロックサイズは考えず、ページサイズとチャネル数を推測できればよい。

が有力なんですが、一方でわざとアライメントを外したデータでテストすると
512B-1/blockから2KB-1/blockの書き込みが妙に高効率(アライメントが揃う
場合と等速)の上、4KB-1から16KB-1/blockのアクセスで突然半減します。
挙動としては8KBのブロックが中にあって、だからそこからわずかにアライメントが
ずれるケースで境界を跨ぎまくって最悪効率になってるような動き。

いまの所、mkfsでは4KB/inode(挙動的には8KB/inodeだけど、これはたぶんLinuxの側でネックになる)にして
stripe-widthを256KBか512KBにする構成が自分のSSDにはよさそうだ、となったのですが、
他の人はどうやってSSDの構成チェックしてるんでしょうか?何かアホみたいに面倒で・・・