というわけで対策検討

ボトルネックはたぶん削除処理が直列化されて、1行毎に pwrite, そして fsync でまとめてコミット、というコードになっている点。fsync を呼出は MUST だから、並列化することはできないし、1行毎の pwrite をやめて削除処理をジャーナリングすることで、どこまでパフォーマンスが上がるのか、ってところになるんだろうな。王道すぎるwww まあ pwrite 64 回呼んで fsync 1回、みたいな処理が writev + fsync 1回ずつになれば、速くなるだろ。そりゃ。

ただ、実際の削除フラグを立てる処理もやらなきゃいけないわけで、それをどうするかになるんよねぇ。となると、やっぱ1行毎に pwrite... ってなるので、この案は没。

やっぱ現在の I/O ベースのコードを捨てて mmap & msync へ以降するしかないな。結構簡単に移行できそうだし。

追記: あー mmap だと 32-bit architecture で壁が出てくるんだった。てかこのへん数ヶ月前に考えた道筋だなぁ。結論なんだっけorz