みなさん、仮想マシンを使ったことがあるだろうか。
もちろん使ったことないって人もいると思うが、ちょっとパソコンが使える人で、いろいろやっている人なら使ったことがあるに違いない。
Windows 7 が登場した時には、Virtual PC で Windows XP 環境を提供する「Windows XP モード」が話題になった。Professional 以上のエディションでしか使えないので一般のユーザーにはあまり印象に残っていないかもしれないが、ここでも実は Intel® VT が必要であった。(あとから不要になったのではあるが)
Intel® Virtualization Technology (Intel® VT) は縁の下の力持ちで、既にみなさんも無意識に Intel® VT を使っているかもしれない。
前振りが長くなってしまったが、Intel® VT について説明をしていく。
タイトルでも書いたが、簡単に Intel® VT を説明すると
仮想マシンを快適・安全に動かすためのハードウェア機構
である。
あくまで、「快適・安全」なのである。仮想マシン実行に必須というわけではない。
まずは、Intel® VT が登場する以前の仮想マシンは一言で言ってしまうと、
仮想マシンはアプリケーションの上で走らせる
ということである。
少し脱線するがみなさんはコンピュータが階層構造で動いていることをご存知だろうか。
「そんなの知ってるよ!」って人もいれば、「そんなの知らなくたってパソコン使えるもん。」って人もいると思う。知らなくたっていいんです。そのための階層構造なのですから。
仮想マシンはアプリケーション上で動くわけだから、そのアプリケーションの上にPC(=階層構造)があるようなものである。通常のPCであればハードウェアで実現してるものを仮想マシンではソフトウェアで実現しているわけである。一般にソフトウェアはハードウェアに比べ低速。そして、アプリケーションへの負荷も大きい。当然プロセスの数も仮想マシン分増える。
タスクマネージャ(Windows)やアクティビティモニタ(OS X)を見るとわかると思うが、たくさんのプロセスが動いているのがわかると思う。
また、仕事には2つレベルが存在している。
OSを動作させるためには優先度を変えて、優先的に仕事をしてもらわなければならないことも多い。例えば、マウス操作やキー操作である。操作したのにPCが反応しなかったら当然「イラッ」とするだろう。
そういった仕事を優先的に動かすためには、CPUを代わりばんこに使わなければならない。しかも、仮想マシン分の仕事までも。
仮想マシンを動かしているパソコンではいろんな種類の仕事をこなさなければいけない。プロセス数は減らすことはできないが、プロセスの交代(切り替え)が多くなり、性能低下に繋がることは容易に想像できる。
これをどうにか支援しようとしているのが、Intel® VT なんです。
結局 Intel® VT ってなんなのって話になるわけです。
Intel® VTは主に、「Intel® VT-x」と「Intel® VT-d」から構成される。
CPUを代わりばんこに使うには、それなりの準備がいる。準備に手間取れば仕事する時間も減ってしまう。これを管理して、効率化を図るのが Intel® VT-x。
また、それぞれの仮想マシンにメモリ空間を提供するのが Intel® VT-d。
これを行うことで、仮想マシンごとに独立したメモリ空間をハードウェアが提供するのでアプリケーション上での管理の簡素化に加え、信頼性・セキュリティも上がる。
今回はこの辺りを実証していくことになる。
VMware Player でお試し。
いくら言葉で伝えても、数値化しないとやっぱり伝わらないと思うのでベンチマークを行いました。
検証環境ですが、
【 ホストOS 】
・Windows 7 Professional (64-bit)
メモリは6GB。Hyper Threading Technology を OFF にし4コアで実行。
【 ゲストOS 】
・Windows XP Professional (32-bit)
・Ubuntu 10.04 (32-bit)
VMware Player 5.0.2 上で実行。メモリは 1GB に統一。4コアに設定。
ゲストOSファイル群は SSD (Cドライブ) に配置。
【 ベンチマークソフト 】
Ubuntu 上では Wine を使用しベンチマークを実施。
64ビットOSは Intel® VT が ON でないと動作しなかったので除外しました。
64ビットOSを走らせることが出来るだけでも、Intel® VTの 価値があるってもんです。
Intel® VT の効果を測るために BIOS 上で Enable/Disable。
今回の検証では簡単のため(?)に、VT と VT-d を纏めて Enable/Disable にしています。
あと、VT が Enable であるか否かの確認には VirtualChecker 3.0.1 を使用しました。
やっているうちに、VT が Enable なのか Disable なのかだんだんわからなくなってくるんですよね…w
共有リソースの切り替え(コンテキストスイッチ)を複数OS上で無理矢理行わせることで、Intel® VT の性能を測ることができるのではないかと考え、以下の様な検証を行った。
* 注意: 以下の検証について *
「同時に」とは言っても、人間が順番にベンチマークを実行しているので測定時に条件に誤差が発生していることを考慮していただきたい。
【 検証1: CrystalMark 2004R3 】
様々な状況でのベンチマークを実施。
同時にベンチマークを行うことが本当に Intel® VT の検証になるのかは謎であるが試してみた。
Test 0: ホストOS上でベンチマーク
Test 1: ゲストOS上でベンチマーク
Test 2: ホストOSとゲストOSで同時にベンチマーク
Test 3: ゲストOSとゲストOSで同時にベンチマーク
Test 4: ホストOSとゲストOSとゲストOSで同時にベンチマーク
以下のグラフはベンチマークを3回実施し、中間のスコアとなるものをデータとして利用した。
同時にベンチマークを行ったものに関しては、各スコアの和の形でグラフ化してある。
パーセンテージは、VT ON (VT Enable) 時のスコアの VT OFF (VT Disable) 時のスコア比 (= VT ON / VT OFF * 100) である。
【 Test 0 】
ホストOSのみでの実行。普通に CrystalMark を実行しただけ。
【 Test 1 】
ゲストマシン1台の時のスコア。
Windows XP: 105%
Ubuntu: 110%
【 Test 2 】
ホストとゲストマシン1台の同時実行時のスコア。
Host + Windows XP: 104%
Host + Ubuntu: 110%
【 Test 3 】
ゲスト同士を実行した際のスコア。
Windows XP + Ubuntu: 112%
【 Test 4 】
ホストにゲスト2台を同時実行した際のスコア。
Host + Windows + Ubuntu: 96%
基本的には VT が ON の場合には性能向上が見られたが、Test 4 のホストとゲスト×2のときだけは逆転してしまった。
なぜこうなったのかは分からないが、3回取得したデータを見比べても同じような結果(VT OFF がたいてい VT ON を上回る)であった。
なんというか、i7が力を発揮してくれたのか、検証状況では劇的な違いが見られなかったっていうのが最終的な見解です^^;
*****
データは残っていないが、同時ベンチマーク終了にかかった時間はいずれも
Windows 7 (ホストOS) < Ubuntu (ゲストOS) < Windows XP (ゲストOS)
の順番になっていた。これまた不思議。
【 検証2: Hyper PI 0.99 Beta 】
先ほどの検証では、ベンチマークにかかった時間が視覚的に伝わりにくかったので、時間で結果がわかりやすい、「スーパーπ」 を用いようと考えた。しかし、スーパーπ はシングルコア向けであるので、マルチコア向けに拡張した「Hyper PI」を利用することしにした。
原因は不明であるが、Wine 上では Hyper PI が正常に動作せず Ubuntu での計測は行えなかったため、以下の場合の検証のみを実施した。
Test 0: ホストOS上でベンチマーク
Test 1: ゲストOS上でベンチマーク
Test 2: ホストOSとゲストOSで同時にベンチマーク
【 検証結果 】
VT ON (Enable) にしたほうが性能がアップ。
こちらも i7 さんが頑張ってくれて大きな違いは出ませんでしたが、数回計測しても逆転現象は発生しなかった。
そして、皆さん気になっているであろう「N/A」ですが(←気になってないって)
…Hyper PIがクラッシュしましたw
何回やっても結果は同じ。
クラッシュするタイミングは違っているので、おそらくですが、ホスト側がメモリ空間にアクセスした際に、ゲスト側のメモリ空間を破壊(上書きetc...)しているのではないかと。
VT を Enable にした際には一度も発生しなかったので、Intel® VT の一つ VT-d によるメモリ空間の分離の恩恵を受けたものだと思われます。
スクリーンショットを撮りそこねてしまったが、同時ベンチマークでは、ホストOSのベンチマークを待って、それからゲストOSのベンチマークが始まってしまうような状況で、期待したベンチマークではなかったが、アプリケーションの動きが変わるというなかなか面白い結果が得られたのではないかと。
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。