Windows on Xen

この前カーネル読書会の帰りに、高橋さんに「Windowsプログラマです」と言ったら、「君、XenWindowsドライバを書いて高速化したまえ」と言われたのだが、水面下で進んでいた模様。
XenSource、WindowsをサポートしたXenを発表
VMware serverが無料で使えることを考えると、488ドルというのはどうなんだろうか。まあゲストOSのライセンスの方が圧倒的に高いから、安定かつ高速ならいいんだろうけど。

WindowsをサポートするためにXenに組み込まれた独自ドライバのおかげで、XenEnterprise製品のほうがWindows仮想マシンのパフォーマンスが高い
これの実装ってどうなっているのだろうか。可能性としては、

  • Windows側には特殊なベンダーのデバイスとして見せて、ハイパーバイザと通信するドライバをインストールさせる
  • Windows側にはRTL8139やPCnet32といったデバイスに見せて(通常のデバイスドライバを使って)、特定のI/Oアドレス等をハイパーバイザがハンドリングする

というアプローチが考えられるが「Xenのドライバ」とあるので、後者っぽい。
VMwareの場合はビデオカードが前者、NICが後者になっていると思う。ビデオカードのドライバは、vmx_svga.sysが16KB、vmx_fb.dllが83KB、vmx_mode.dllが4KBとなっている。
仮にXen用のWindowsビデオドライバを書くとすると、おそらく10000〜50000行くらいの規模か。
それにしても、オープンソースの商業利用というと、オープンソース版に新機能を実装して、Enterprise版が安定版で後を追うというイメージがあるんだけど、Xenは逆だ。仮想化のメリットはパフォーマンスが高くてこそなんだから、肝心の部分を非公開にするというのはなんだかなあ。