読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(writeboost report) Persistent Loggingの実装を開始した

http://akiradeveloper.hatenadiary.com/entry/2014/02/09/071120

に, 不揮発デバイスを使った機能拡張について書いた.

理解のためにいうと, この拡張は性能を上げない. むしろ下げる. しかし, 揮発デバイスしか使わない時にあった性能のブレをなくすことが出来る. ベンチマークなど, 断続的にライトを受けるケースで性能を出す目的であれば, この拡張は無用であるが, 現実的なワークロードはそうではない. 最高性能を多少削っても, 常に最高性能に近い性能を出し続けた方がいい. 性能の削りに関しては悲観するレベルにはならないだろう.

この機能をPersistent Loggingと名付ける. 不揮発デバイスにダーティデータの永続的なログをとり, 障害時の助けにする. writeboostは別に, 揮発バッファ(rambuffer)もとり, 最終的にSSDに書き込むのはこちらとする. これは, 実装的な理由もある. ログ上のデータへのキャッシュヒット判定や, データの差分マージなどは超むずいのだ. walbのドキュメントを見ればこの点については分かる. 性能的にも, キャッシュヒット判定は定常的にオーバーヘッドとしてかかってくるので, この部分は軽くしたいというのもあり, データ構造を余計に持つことによって性能と実装の簡単さを得る戦略をとる.

今日, この機能の実装を開始した. そこそこ大変だとは思っていたが, おそらく思っていたより大変であり, 最終的にはテストコード抜きで1000行くらいの追加になるだろう. さらにデバッグもあるから, しばらくはこの実装で楽しめそうである.

writeboostはこの機能によって, ファイルシステムの実装を軽量にする. ファイルレベルのSSDキャッシングと, ブロックレベルのwriteboostを組み合わせるのが最強であろう. ディスクキャッシュをしこたま増量出来るならばそれが最善である. 何度も言ってるが, リードは近く, ライトは遠くがストレージ力学における基本なのである.

ちなみに, いつ頃実装が終わるかであるが, 2月中に終わればバンザイと言ったところである. 私は転職してからとても忙しいので, writeboostにどっぷりというわけにはいかなくなった. 外注に出したいが金がない.