仮想サーバー、XenまたはVirtualBoxのCPUとメモリの使用量が多い場合、どちらがパフォーマンスが良いですか?
VirtualBoxは、ゲストOSが仮想環境で実行されていることを知らない方法でゲストOSを実行するため、Xenは通常、VirtualBoxよりもパフォーマンスがはるかに優れています。別の言い方をすると、ゲストOSは仮想的に実行されるように変更されていません。このため、VirtualBoxはカーネルタイプの命令を「トラップ」し、カスタムコードを実行してから、ゲストに制御を返す必要があります。 IntelおよびAMDが提供するハードウェア仮想化サポートを使用できますが、それでもオーバーヘッドが増大します。
一方、Xenは、ゲストOSがXenモデルに適合するように再コンパイルされていることを確認します。したがって、ゲストOSからハイパーバイザーへの制御フローがスムーズに行われ、ゲストOSがハードウェアに直接アクセスするふりをする必要がないというオーバーヘッドがありません。
パフォーマンステストのデータを含む、かなりの数の仮想化テクノロジの概要については、 このレポート を参照してください。 Linuxについてのみ説明しますが、Linux-Vserver、Xen、OpenVZ、KVM、VirtualBox、QEMUをカバーしています。 Linux-VserverとXenは一般的に最高のパフォーマンスを発揮しましたが、レポートを読んでさまざまなワークロードを確認してください。
上記のすべてを述べたとしても、VirtualBoxがXenよりも優れている領域があるかもしれません。ゲストOSにグラフィカルウィンドウレイヤーがある場合、特にゲストOSに特別なVirtualBoxコンポーネントをインストールすると、VirtualBoxはそれを適切にサポートします。
そして最後に、Xenは変更されたゲストOSのみを実行することに注意してください。変更されていないゲストOSは実行できません。
ハミッシュダウナーの答え は最後の点で間違っています。 Xenは変更されていないゲストを実行できますが、完全に仮想化されたHVMゲストとして実行する必要があります。これを行うには、ホストコンピュータがIntel VTまたはAMD-V対応のCPUでハードウェア仮想化をサポートしている必要があります。
XenとVirtualboxにはそれぞれ場所がありますが、2つの異なるタイプのハイパーバイザーです。 Xenはタイプ1ハイパーバイザーであり、Virtualboxはタイプ2ハイパーバイザーです。 Type 1ハイパーバイザーは、サーバー環境で見られるものである傾向があり、Type 2ハイパーバイザーは、デスクトップとして対話する複数のOSを実行するためにより一般的です。これは主に、そのシンプルさとデスクトップ統合の向上によるものだと思います。ただし、タイプ2ハイパーバイザーの下のゲストは、基盤となるハードウェアから離れており、タイプ1ハイパーバイザーの下のゲストよりも遅くなる傾向があります。すべての場合と同様に、ルールには常に例外があります。
MacのデスクトップでWindowsマシンを仮想化するためにVirtualboxを使用したことがないので、私はXenについてのみ話すことができます。
他の人が述べたように、Xen(およびXenをベースとするXenServer)は、準仮想化カーネルを使用して、CPUおよびメモリにバインドされたパフォーマンス特性を劇的に改善します。ただし、これは特殊なカーネルを備えたLinuxホストにのみ当てはまります。これを利用するには、Xen対応のカーネルが必要です。
また、Windowsはこの方法での仮想化をサポートしていませんが、それぞれのCPU上のIntel VTおよびAMD-V拡張機能はWindowsを「キャッチ」し、準仮想化方法で動作させます。 Windows 2003とWindows 2000は仮想化されていることを認識しませんが、Windows 2008はこれを検出し、いわゆる「エンライテンド」モードで実行されます。これは、Linuxの「準仮想化」モードと比較できます。