製品の仮想化技術には、 VMware でも Parallels でも、 Windows をゲストとして動作させる時に I/O パフォーマンスを向上させるためのドライバが用意されています。
このような仮想化デバイスのドライバを使用しない場合、仮想マシン上で動作する Windows などの OS は、仮想マシン技術がエミュレートする PCI バス上のディスクコントローラに対して I/O を行います。これに対して、先のドライバは VMware などの仮想化ソフトウェアと直接 I/O データをやりとりするため、パフォーマンスが向上する仕組みになっています。
さて、 Xen においてもこのようなドライバの仕組みは Paravirtual Driver (準仮想化ドライバ) という形で存在しています。 Xen のソースコードをダウンロードすると unmodified_driver/ などというディレクトリがあったりしますが、それがまさにそのドライバです。
アンオフィシャルですが、 Windows 用のオープンソースな PV ドライバも存在しています。
しかし、ただ単純にベンチマークをとってみると...
【検証環境】
・HP ProLiant ML115 G1
・Athlon64 X2 5600+ (2.8GHz x2)
・8GB PC5300 RAM
・Hitachi HTS72323 320GB 2.5inch HDD
・openSUSE 11.1 + Xen 3.3
・Windows xp SP3 (x86)
あれれ~? PV ドライバを入れた場合のほうがパフォーマンス伸び悩んでますね。というか QEMU のハードウェアエミュレーションと比較し完敗です。何かの間違いでしょう。しかし、再計測しても再計測してもこの結果がひっくり返ることはありませんでした。
そこで、このツールで計測をはじめてから計測が終わるまでの時間を、愛用の G-SHOCK で測ってみました。なお Crystal Disk Mark のソースコードを確認したところ決まった量の I/O 負荷をかけて、それの所要時間から性能を算出しているようです。つまり計測値はアテにならなくても、 I/O に要した"時間"は信用できると考えられます。結果は以下のとおりでした。
PV ドライバ使用時: 3分23秒
PV ドライバ未使用時: 3分31秒
なんだ、やっぱり PV ドライバのほうが早かったんですね。約 6 % の性能アップしていたようです。しかし、これでは本当のスループットがわかりませんね。敢えていえば QEMU エミュレーションから 6% しか性能向上がない PV ドライバというのも随分寂しいものです。( XenSource や Novell が作っているドライバはもっと高いパフォーマンスを示してくれることでしょう)
PV ドライバには I/O パフォーマンスを向上させる以外のメリットとして CPU に対する負荷の低減があります。無意味に低レベルなハードウェアの真似(ゲストによる I/O ポートへのアクセスをトラップしエミュレーション)をする必要がなくなるからです。
I/O パフォーマンスについてはまた計測方法を検討して検証をしてみたいと思います。というわけで、今日はおやすみなさい。
0 件のコメント:
コメントを投稿