« VMware FusionのVT-xサポート | トップページ | CrossOver Games 8.1.4リリース »

2009年12月29日 (火)

VMware FusionのVT-xサポート(2)

前回書いたように、仮想化エンジンの優先度が「自動」のときはゲストOSとCPUの種類に応じて最適な仮想化エンジンが使用されるが、Windows 98などの古いOSはCore i7搭載のiMac(Late 2009)でも「バイナリ変換(virtual exec = 'dynamic')」が使用される。

ゲストOS/CPUの種類と使用される仮想化エンジンの対応表はVMwareのCommunitiesサイトで参照できる。VMwaew ESXを対象とした表なのでFT(Fault Tolerance)のようにVMware Fusionで未サポートの機能もあるが、基本的には同様である。

CPUが仮想化支援機能をサポートしていなかった時代、仮想化ソフトのベンダーはエミュレーション処理の速度を向上させるため、独自に工夫を凝らしていた。2005年の11月に一部のPentium 4にVT-xが搭載されたが、VMwareは(当時の)VTよりも自社のバイナリ変換によるエミュレーション処理のほうが高速であるとして、VT-xの使用を最小限に留め、多くのケースでは従来通りバイナリ変換で処理を行っていた。
(64bitゲストOSはバイナリ変換での処理が困難なためVT-xを使用する)

VT-xはCPUに従来の動作モード(カーネルモードやユーザーモード)に加えて仮想化ソフト用の動作モードを追加している。Pentium 4に搭載された初期のVT-xでは、このモード変換が遅いという問題があったが、これはCore 2で改善された。またG-0ステッピングのConroeコア以降では仮想化環境での割り込み処理の改善を目的としたVT FlexPriorityがサポートされ、NehalemアーキテクチャのCPUではメモリ管理ユニットの仮想化支援機能(EPT)がサポートされるなどの改善が行われたため、VMwareもVT-xの適用範囲を広げている。

例えばLinuxゲストOSの場合、EPTなしの環境ではvmi(準仮想化)カーネルを使用することで性能が向上するが、vmiよりEPTのほうが性能が良いため、EPTが利用できる場合はvmiをオフにすることが推奨されている。
(vmi有効の場合は常に「バイナリ変換」が使用されるため)

ただし、Windows 9x/2000などの古いWindowsゲストでは今でも「バイナリ変換」のほうが効率的とされており、VT-xは使用されない。

参考資料
A Comparison of Software and Hardware Techniques for x86 Virtualization
・VMware Workstationのパフォーマンス ベストプラクティス(PDF直)
・サーバー仮想化に最適な ハードウェア・プラットフォーム(PDF直)

|

« VMware FusionのVT-xサポート | トップページ | CrossOver Games 8.1.4リリース »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/159342/47147507

この記事へのトラックバック一覧です: VMware FusionのVT-xサポート(2):

« VMware FusionのVT-xサポート | トップページ | CrossOver Games 8.1.4リリース »