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直)
| 固定リンク | トラックバック (0)












