テストステ論

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

(writeboost report) plogありの計測結果

writeboostはオプションとして, persistent logging(plog)をONにすることが出来る. これを使うことによって, FLUSH時のペナルティを抑えることが出来る.

persistent loggingはどのようなデバイスでも使うことが出来る. すでに実装済のtype=1では, SCSIデバイスを使うことが出来るが, データを永続化可能なデバイスであれば何でも利用出来ると思う. 今後, type=2, 3と増やしていく予定だ. type=2は, レッドハッドが提案する予定のHMMを使うことになると思う.

今回は, plogとして以下2種類のデバイスを使って4KBランダムライトの測定を行った.

  1. キャッシュとして使うデバイス上, 他のパーティション (1MBほど)
  2. tmpfsから作ったループバックデバイス

1に期待することは, plogを使う上で現在もっとも現実的な構成の測定. しかしこの問題は

plogの書き込みはキャッシュの書き込みと同量(実際はやや多い). その上, 9sectorごとにシーケンシャルライトを発行することになる. これがスループットにどう影響するか

である. 運用上は寿命も問題になる. スループットは, 仮に100MB/secだったとしても十分である. 100MB/secのランダムライトが出来るブロックストレージを作るのは, HDDをいくら並べても難しい. ライトブーストが対象とする中小規模のストレージであれば, このくらいのスループットが出るならばあとはいくら高くても意味がない. 従って, むしろレイテンシの方が重要となる. plogは, スループットを落とす代わりに, (FLUSH時のペナルティを下げて)レイテンシを下げることを目的とするから, 現実的な運用に向けた機能といえる. plogがないライトブーストは, FLUSH時のペナルティが, 多くのシステムにおいて現実的ではないと私は考えている. 現実的な運用では常に最悪ケースが議論となる.

2に期待することは, plogが永続メモリになったと仮定したときの測定である.

大雑把な結果は以下,

  1. 120MB/sec
  2. 260MB/sec

2は, SSDのシーケンシャルライトに近い. これは最良の結果である. 一方で1は120MB/secと, シーケンシャルライトの半分くらいしか出ていない. 理由は, 単純に, 書き込みが倍だからだろう. plogに関していうと9sectorのライトを非同期で出しているため, 1024sectorごとのバッファフラッシュに比べると効率が悪い. これも影響して, 半分より下がっているのだろう. ただし結果は言うほど悪くない. スループットは半分になるが, レスポンスは安定する. 実運用上は, SSDのうち小さな領域をplogとして使い, 性能を安定した方が良いだろうと思う.

ちなみに, HDD-SSDのキャッシュソフトウェアであれば, どんなものであれ, FLUSH命令の処理にペナルティがある. 例えば, 本当に実直にキャッシュというものを作っただけに見えるdm-cacheですら, writeboost(type=0)と同様に, FLUSH命令はdeferしている. おそらくbcacheも同様であろうと思う. ではwriteboostも彼らと同等のペナルティということで片付けられるかというと, 少なくともdm-cacheと比較した時はそうではない. ライトブーストはバッファを作成してこれをフラッシュしないといけないためオーバーヘッドが大きいのだ. 分かりやすくいえば, ログ構造化という技法によって大振りをしているため, 空振りした時のペナルティが大きい. 従って, plogによる性能の安定化は, writeboostにとって多大な意味がある. plogを利用することによって, FLUSH時のペナルティは, SSDデバイスそのもののものとほぼ同等になる. これは言い換えると, SSDを利用するロジックがもたらすペナルティを取り除いているということである. これが理論的に最善であることはいうまでもない. さらに, plogが永続メモリであった場合, あるいはSSDが永続メモリをバッファとして利用したものであった場合, FLUSH時のペナルティはないも同然となる. 特に前者は, SSDへの書き込みが常に512KBとなることが100%保証される. これは寿命の点で有利である.

dm-writeboostのコードはここにある.

https://github.com/akiradeveloper/dm-writeboost

ぜひ使って見て欲しい.