web-dev-qa-db-ja.com

仮想マシンと物理ホストのパフォーマンスの違いは何ですか?

私が作業している場所では、Debian Linuxディストリビューションを使用して比較的強力なPCを実行しています。ただし、インストールが必要な特定のプログラムについては、CentOSを使用することをお勧めします。これらは私たちの主要な作業ツールです。職場のすべてのコンピューターのOSを変更することは可能ですが、簡略化のためにVirtualBoxの使用がより良い選択であるかどうかを判断しようとしています。

これはすべて次の点にかかっています。私たちが実行する必要のあるプログラムは、非常にプロセッサを集中的に使用するタスクであり、シミュレーションが起動されるたびに1時間以上簡単に実行できます。 Virtual Boxを使用した場合のパフォーマンスの低下が、OSの変更に値するほど大きいかどうかを判断する必要があります。

だから私の質問は、仮想ボックスでプロセッサ集中型のタスクを実行した場合とネイティブPCで実行した場合のパフォーマンスヒットとの違いを誰かが検証可能に教えてくれるかどうかです。

ありがとう。

15
aarelovich

非常に数の多いプログラム(CPUに非常に依存している)の場合、VMのパフォーマンスヒットはほとんどないはずです。命令はCPUで直接実行されます。これは、ホストとVMで同じです。

深刻なコンパイルタスクであっても、パフォーマンスの違いはほとんど目立ちません。 Windows上のVMwareでCentOS VMを実行します。

ホストでLinuxを実行しているので、VirtualBoxではなく [〜#〜] kvm [〜#〜] (カーネル仮想マシン)を検討することもできます。これは、ほとんどすべての最新のCPUで利用可能なIntel VT-x仮想化拡張機能を使用して、Linuxで仮想化サービスを提供する一連のカーネルモジュールです。 QEMUはKVMをアクセラレータとして使用し、ホストCPUでx86コードを直接実行します。

virt-managerをインストールして試してください。

15

これに対する単一の良い答えはありません。 VMをどのように使用するかに大きく依存します。

例えば。 VMWare(タイプ2ハイパーバイザー)と純粋にCPUにバインドされたプログラムを使用すると、ほぼ完全なCPU速度が得られました。システムコールの多いプログラムと同じハイパーバイザーを使用すると、深刻な速度低下が発生します。

また、タイプ1ハイパーバイザー(ゲストなし)OSを使用すると状況も変化します。そしてそれらの間でもあなたは多くのバリエーションを持っています。例えば。 Xenがサポートする5つのモード(先週末のIIRC、Xenに関するFOSDEMトーク)を備えたXen。ハードウェア使用からパラ仮想化まで。

要約すると:質問のとおり、スローダウンがほとんどない状態から深刻な速度までさまざまです。


さて、VirtualBoxに注目すると、それはタイプ2ハイパーバイザーです。純粋にCPUにバインドされたプログラムで問題ありません。

6
Hennes

実際、Dockerは、あなたがやっていることに対して、さらに優れたオプションであるように思えます。 Dockerはコンテナーを提供します。コンテナーは、同じカーネル上で実行される分離されたサンドボックスです。システムコール/ IOオーバーヘッドはゼロです。コンテナ内のプロセスはホスト上のプロセスと同じであるためです。

すでにLinuxを実行しているため、Dockerは、すべてのマシンを再インストールすることなくCentOS環境を提供する優れた方法です。

また、私のユーティリティ Scuba も確認してください。これにより、Dockerコンテナー内でビルドなどを簡単に実行できます。 makeを実行する代わりに、scuba makeを実行します。それで全部です!

5