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

テストステ論

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

(writeboost report) ライトバックが切迫している時にもっと小刻みにライトバックする

adaptively change the nr_cur_batched_writeback · Issue #147 · akiradeveloper/dm-writeboost · GitHub

これ2.2.4に入れます. なので, 2.2.4の目玉は,

  1. update_sb_record_intervalに関する修正
  2. これ

の2点. 一日で終わるかなぁ・・・.

146でトランザクションが遅くなったのは, 全セグメントがライトバック待ちになってライトバックが切迫した時にREQ_FLUSHフラグのついたbioが長時間ブロックされるからだと推測している.

ライトブーストは, 空きセグメントがなくなった時, 新しくフラッシュすることが出来なくなり, ライトバックの結果空きセグメントが出来るのを待つことになる. この最悪な状況では, bioはブロックされまくる. その中にREQ_FLUSHをもったものがいた場合, 悲惨なことになる.

このような状況を回避することは出来ないし, ライトブーストはライトバックを高速化することによってなるべくこの状況に陥らない努力はしている. しかしそれでも起こりうる. 例えば, 断続的にライトするような, 明らかにキャッシュを挟むのが無駄なワークロードの場合は100%起こる.

実際に起こって気づいたのだが, このような状況下においてもライトブーストは悠長に「32個セグメントを一括でライトバックするぞーい」と寝ぼけている. それは, 空きセグメントが一杯ある場合ならば最善の戦略だと思うが, 少なくなった場合には最悪だ. そういう状況では, ライトバックのスループット低下には多少目を瞑って, 小刻みに例えば1個ずつライトバックする方が理に適っている.

そういう修正をする.