Intel VTを有効にしたときのパフォーマンスの違いについて検証してみましょう。
-検証時のハードウェアとソフトウェアの構成-
■ハードウェア
【CPU】 Intel Corei7-3770 (Intel VT対応)
【メモリ】 PC10600 DDR3 12GB
【SSD】 Intel SSD320-300GB (SSDSA2CW300G3K5)
【マザーボード】 DQ77MK (Intel Q77チップセット搭載)
【グラフィック】 Intel HD Graphics4000 (CPU内蔵)
【ケース】 Maxpoint CS-1116
【電源】 POWER MAN IP-S450CQ2-0
■ソフトウェア
Windows7+VirtualPC環境
【仮想PCマネージャ】 Microsoft VirtualPC
【物理PCのホストOS】 Windows7Ultimate (64bit)
【仮想PCのゲストOS】 Windows7Ultimate (32bit)
【仮想マシンの仕様】CPU1スレッド、メモリ3072MB、HDD領域25GB
Windows8+VMware Player環境
【仮想PCマネージャ】 VMware Player5.0
【物理PCのホストOS】 Windows8 Pro (64bit)
【仮想PCのゲストOS】 Windows7Ultimate (32bit)
【仮想マシンの仕様】CPU1スレッド、メモリ3072MB、HDD領域25GB
■Intel VTの有効/無効の切り替え方法
マザーボード「DQ77MK」の場合は、BIOS(起動時にF2キーで入る)のSecurityのタブの
・Intel Virtualization Technology
・Intel VT for Directed I/O (VT-d)
で行うことができます。(下記スクリーンショット参照)
-Windows8+VMware環境でVTの効果を検証する-
VMware PlayerでIntel VTの効果が得られるか検証しました。
VMware PlayerではGPU関係が強く、DirectX9.0cやOpenGL2.1をサポートします。この為、ゲームのようなアプリケーションでも実行できるメリットがあります。
ここでは検証項目としてCPU関係、GPU(主にゲーム)関係、SSDの速度比較、ネットワークの転送速度を比較していきたいと思います。
【共通の測定条件】
・仮想PC設定はCPU1スレッド、メモリ3072MB、ネットワークはブリッジ接続とする。
・解像度はフルスクリーンのアプリケーション以外は1920×1080(32bit色)とする。
・各VTの効果が判るように、両方OFF/VT-xのみON/VT-dのみON/両方ONで実施。
・各ベンチマークソフトは記載の無い限り、初期値とする。
・物理PCの測定はCPU8スレッド、メモリ容量12GBの為参考程度にしてください。
※各グラフは見やすくする為に物理マシンは含めていません。(表には記載)
また、最小値が0になっていないことに注意してください。
■CPU性能比較
CPUの性能比較です。CPUの仮想技術と謳っているVT-xの効果が期待されます。
・CrystalMark2004R3のCPU性能(ALU/FPU)
・午後のこ~だ(ノーマルベンチ)
・3DMark06 CPUスコア (Ver.1.2.1)
・CINEBench R11.5(CPUスコア)
【CPU性能比較まとめ】
CPU関係のベンチに関しては、どれも似たような傾向を示しています。
VT-xを有効にするとスコアが上昇します。VT-dでも上昇しますが上昇幅自体は小さくなります。
但し、VTを両方有効にした場合のみベンチの種類により、上昇したり下降したりバラバラです。この項目だけ見ると、VT-xだけONする方がベストなのかも知れません。
■GPU(主にゲーム)性能比較
GPUと言っても、VMMの仮想GPUはCPUのエミュレーションで実現されているので、実際にはCPUの性能に大きく左右されると思われます。
・3DMark06 総合スコア (Ver.1.2.1)
ちなみに、VMware環境の仮想PCのGPUは「VMware SVGA ii (1x)」と認識されます。
・MHF3(モンスターハンターフロンティアG) ベンチマーク -大討伐-
・FINAL FANTASY11 オフィシャルベンチマーク3(HIGH設定)
・きゃらコレ! ITちゃん ダンシングベンチマーク
・Key Rewrite ちはやローリングWe! (Ver1.10)
・CINEBench R11.5(OpenGL)
【GPU性能比較(主にゲーム)まとめ】
ほとんどの項目でVT-OFFのスコアが最下位であることから、VTを有効にすると性能が上がるのは一目瞭然です。
VT-xのみ有効にした場合が大きくスコアが伸び、VT-dが小さく伸びる・・・この傾向は前項のCPU関係のベンチと同じ傾向です。
■SSDの速度比較
VT-dはI/O処理の仮想化を支援するとのことでSSDの転送速度を比較しました。(CrystalDiskMark Nano Pico Editionを使用)
(単位:MB/s)
SSDのリード速度速度は、VTを有効にした場合に上がりました。
VX-x、VT-dのどちらでも上がります。
推測ですが、VMM環境ではSSDの転送にCPUを使うことと、今回のテスト環境が仮想PCにCPUを1スレッドしか割り当てていない要因が重なり、CPUの仮想化支援であるVT-xでも転送速度が上がったものだと思われます。
■ネットワークの転送速度比較
仮想PCのネットワーク速度についても比較してみました。
(PC間の通信速度の測定にはNetMiを使用)
NetMiは片方のPCをサーバーとして動作させ、もう片方のPCをクライアントとして動作させ、2点のPC間にパケットを送り、その転送速度を測定します。
【設定】
データサイズ:512バイト、UDPパケット、30秒間送信
【測定条件】
仮想PCをクライアント(送信側)、物理PCをサーバー(受信側)とする。
クライアント上で「平均送信速度」を測定。
さらに各々の条件で3回ずつ測定し、その平均値を記載しています。
(単位:Mbps)
ネットワーク転送速度に関しては、VTを有効にした方が遅くなってしまいました。ただ、後述するVirtualPC環境では飛躍的に速度が上がっている為、VMMとの相性があるのかも知れません。
-Windows7+VirtualPC環境でVTの効果を検証する-
VirtualPCでもIntel VTの効果が得られるのかを検証しました。
こちらの評価ではVT-xとVT-dは一括で変更しています。
■CPU性能比較
CPU性能と言っていますが、Virtual PCでは描画(GPU)に相当する部分もCPUで行っている為、比較対象としました。(CrystalMark2004R3を使用)
【測定条件】
解像度は物理PC、仮想PCとも1024×768 32bitカラー
VirtualPC環境ではD2Dの項目は測定できない(エラー)の為、除外とする。
【結果】
まず、物理PCに対し、仮想PCのスコアは大幅に劣っています。
これは、物理PCがCorei7-3770の8スレッド動作に対し、VirtualPCが1スレッドしかサポートしない為です。また、グラフィックに関しては、Virtual PC上ではS3 Virgeという大変古いグラフィックカードをCPUでエミュレーションしている為、こちらも大幅に遅くなります。
その中でVT 有効/無効を比較しますと、有効時にはCPUで約4%、HDD(SSD)で約10%、グラフィック関係においては3~5倍の性能が向上しています。確かに多くの項目でVTの効果はあることが確認できます。
■SSDの速度比較
VT-dはI/O処理の仮想化を支援するとのことなので、SSDの転送速度を比較しました。(CrystalDiskMark Nano Pico Editionを使用)
物理PC(ホストPC)
物理PCのSSDの転送速度です。今となっては型落ちのIntel SSD320(S-ATA3G)を使用しているので、スコアはそれなりです。
仮想PC VT OFF
仮想PCでVTがOFFの場合、大きくスコアを落としており、シーケンシャルアクセスでほぼ半分、その他のアクセスでは更に差が付いてしまっています。Virtual PCのオーバーヘッドはそれなりに大きいようです。
仮想PC VT ON
仮想PCでもVTをONにすると、シーケンシャルアクセスで10%以上、項目によっては2倍近く速くなっています。物理PCには遠く及びませんがストレージの性能は体感速度に直結するので効果は大きいと思います。
■ネットワークの転送速度比較
仮想PCのネットワーク速度についても比較してみました。
(PC間の通信速度の測定にはNetMiを使用)
NetMiは、片方のPCをサーバーとして動作させ、もう片方のPCをクライアントとして動作させ、2点のPC間にパケットを送り、その転送速度を測定します。
【設定】
データサイズ:512バイト、UDPパケット、30秒間送信
【測定条件】
クライアント上で「平均送信速度」を測定。
さらに各々の条件で3回ずつ測定し、その平均値を記載しています。
(実ネットワーク環境だと、色々な要因で結構バラつきますので・・・)
また、仮想PC同士の速度も比較できるように、2台の仮想PCを作成しています。
【結果】
結果は一目瞭然です。
ホスト-VPC間では、VT ONすることにより、VT OFF時のおよそ6倍もの転送速度が得られました。VPC同士間でもおよそ3倍の速度が出ています。
VT ONの場合は、ホスト-VPC間、VPC同士間のどちらでも、約93Mbpsとなりました。転送速度が速くなり、ボトルネックになる要因が変わったのだと思われます。サーバーで仮想化する場合は非常に有用だと思います。
-結論-
上記の検証により、Windows7+VirtualPC環境、及びWindows8+WMware環境のどちらでもIntel VTによる性能向上が確認できました。
VirtualPC環境では、Hyper-V等に比べるとVMMとしてのオーバーヘッドが大きいので物理PCに比べると大幅に遅くなる傾向があります。VTを有効にすることでオーバーヘッドを大幅に低減でき、結果パフォーマンスが向上します。
WMware環境では、VirtualPCに比べると実機に対する性能低下は少ないとはいえ物理PCと比べると遅くなってしまいます。VTを有効にすることでより実機に近いパフォーマンスを発揮することができます。(また、VMwareではゲストOSを64bitOSにする場合は、Intel VT等のCPUの仮想支援機能が必須となります)
仮想マシンを使うなら、Intel VTの恩恵は大きいと言えるでしょう。