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

テストステ論

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

(writeboost report) 4Kランダムライト 480MB/sは出る

ここ一ヶ月ほど, Gitterで中国人学生の質問に答えていた.

この学生は写真は美人女性だが, 明らかに性別は不明(名前はkevinであったりryanであったりして謎に包まれている)で, しかも所属は中国でいう防衛大学みたいなところで, 一体そこでなぜライトブーストが必要になるのか全く分からない. しかし結構コードも読んできており, 本気な感じがする. この前対応したIssueの件もそうだが, ライトブーストはアジア人(中国・韓国)に人気がある. やはり, 開発者が日本人ということで親しみがあるのだろうと思う.

彼女の環境でランダムライトのスループットを計測したいというので, 色々と指示をしたら, どうやらいい結果が得られたようだ. SSDSamsung 850 Pro 128GBで, 事前測定ではsequential writeが450MB/s程度出たということだから, ライトブーストはほぼゼロオーバーヘッドでログを生成し, シーケンシャルにログをSSDに送っていったことが伺える. 500MB/s程度では, ライトブースト自体の実行パスはオーバーヘッドになり得ないということが分かる.

bw (KB /s): min=477000, max=488696, per=100.00%, avg=485409.41, stdev=2959.90
lat (usec) : 2=99.59%, 4=0.01%, 10=0.01%, 20=0.39%, 50=0.01%
lat (usec) : 100=0.01%
cpu : usr=8.30%, sys=28.03%, ctx=8693, majf=0, minf=26
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=1048576/d=0, short=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: io=4096.0MB, aggrb=485227KB/s, minb=485227KB/s, maxb=485227KB/s, mint=8644msec, maxt=8644msec

ライトブーストは, このように瞬時的なライトを超速で吸収することが出来るが, 仮に断続的にライトが来るようなケースでも性能向上が出来る. その仕組みは, ライトバック時のソーティングにある. ライトブーストはたくさんのログのIOを集計し, ライトバック先アドレス順にソーティングした上でこれらをまとめて非同期ライトバックする. こうすることで, もともとちまちまHDDに書いていた場合に比べて, HDDからすると都合の良い形でライトが落ちてきてくれるから, 結果としてHDDはライトブーストなしに比較して良好な性能を保ち続けることが出来る.

これはさらに, リード性能の改善にも繋がる. これはドミトリがライトブーストを気に入ってる理由の一つでもあるが, ライトに特化して強化することによって, 結果としてリードを助けることになる. ストレージというのはライトが重いし, 順序や永続化など制約も大きいから, これが少し軽くなるとリードにはずいぶんと恩恵がある. だから, リードキャッシングをベースにして開発しているキャッシュソフトウェアは性能が出ないし, バギーなのだ.