KSM comes back!

LWNにKSM tries againという記事(subscriber-only)があったので簡単にまとめてみました。

  • 昨年11月に颯爽と現れたKSM(kernel shared memory)
  • 同じ内容を持つページを1つにまとめる*1ことで、メモリ使用量を大幅に削減することが可能とするKSMは、特に仮想マシンのメモリ使用量が多いKVMに有効なため、KVMコミュニティ(と私)に多いに歓迎されました
  • しかしKSMに2つの壁(課題)が立ちふさがりました
  • 1つはKSMでページ同定に使われていたSHA1ハッシュ値の衝突を利用したアタックの可能性
  • もう1つはVMwareがもつ特許()でした
  • この2つの問題が明るみになってから5ヶ月間、KSMはKVM MLに姿を現しませんでした
  • しかし先日、長い沈黙を破ってKSMが戻ってきました
  • しかもKSMはこの2つの問題を解決しているようです
  • KSMはハッシュ値による同定という手法を捨ててred-black trees*2を利用するように実装が変更されていました
  • この変更はハッシュ衝突の問題のみならずVMwareの特許もうまく回避しているようです*3
  • Linuxコミュニティにも概ね好感をもって受け入れられているようで、2.6.31にマージされることが期待されています

かなり内容を端折っているので詳しく知りたい場合は元記事を参照してください。(現時点はsubscribeが必要ですが。。。)

*1:いわゆるCopy-on-Write状態にする。ページの中身が変わる(書き込みがある)まで1つのページとして管理する。

*2:Linuxカーネル内でよく利用されるデータ構造(2分探索木の一種)。ノードの探索、挿入、削除が最悪O(log N)で済むという特徴をもつ。

*3:どうやって回避したの?と聞かれると困りますが。。。