實田 健
日本ヒューレット・パッカード

 ここでは,XenのゲストOSに対して負荷をかけ,仮想環境におけるCPUや入出力,ネットワークなどの各種性能を検証していく。

 Xenを用いた仮想環境は,どの程度CPUに負荷をかけているのだろうか。Xen自体のCPU負荷が0であれば,実機上と同じ速度でXen上のOS(ドメインU,ゲストOS)が動作するはずで,50%の負荷がかかっていれば動作速度は半分になるだろう。

 テスト・プログラムを使ったベンチマーク・テスト(以下,ベンチマーク)に進む前に,XenのCPU制御について簡単に説明しておきたい。

 Xenは,実際のCPU(パソコンに搭載されたCPU,以下では実CPUと記す)をじかには使わない。ドメインが起動するとまず仮想CPUを定義する。そして,ドメイン・スケジューラがドメイン上の仮想CPUと実CPUの間に入り,プロセス処理を進める。ドメイン・スケジューラはそれぞれの実CPUの上で動作し,最適だと思われる仮想CPUに対して,時分割で実行権限を与える(図1)。このような仕組みになっているため,ドメイン内のOSからは,実CPUを100%占有しているかのように見える。

図1●仮想CPUに実CPUを割り当てる仕組み
図1●仮想CPUに実CPUを割り当てる仕組み

 Xenはバージョン3.0からSMP(対称型マルチプロセッシング)に対応しており,各ドメインに複数のCPUを割り当てられるようになった*1。従って,負荷のかかるゲストOSにはCPUを多く割り当て,負荷の低いゲストOSには少なく割り当てるといった,柔軟な運用が可能だ。

準仮想化と完全仮想化の違い

 Section 1で説明したように,Xenの仮想化の仕組みには二つの方式がある。一つはあらかじめXen上で動作するようにコードが修正されたゲストOSを動作させる「準仮想化」,もう一つはIntel VTやAMD-VといったCPU内蔵の仮想化機能を利用することでOSのコードに修正を加えることなくゲストOSとして動作可能な「完全仮想化」である。

 完全仮想化を利用すると,Windowsなどソース・コードを自由に書き換えられないOSもXen上で利用できるというメリットがある。反面,準仮想化と比べてCPU性能が悪くなると言われている。

 そこでCPU性能を測定する際に,準仮想化と完全仮想化における性能の違いについて,特に調べてみたい。同じゲストOSを準仮想化と完全仮想化の両方で作成。その後,同一のベンチマークを実行し,どのくらい性能に差が現れるかを検証する*2

 評価環境には,ドメイン0,ドメインUともにCentOS 5(x86_64版)を使用した。

 CentOS 5を仮想化モードでインストールしてドメイン0を作成し,virt-managerを使用してドメインUを作成している。CentOS 5にはXen用のGUIツールが含まれているため,とても簡単に仮想環境を作成できる。