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


15

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

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

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

ありがとう。

回答:


15

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

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

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

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


OK。それを試してみます。返信いただきありがとうございます。
アーレロビッチ

パフォーマンスに関して、KVMはVirtualBoxとどのように比較されますか(LinuxシステムでWindows 10を実行しているとしましょう)。
Royi

VirtualBoxが(KVMのように)CPU仮想化拡張機能を利用しており、ワークロードの大部分がCPUにバインドされている場合、それらはほぼ同じになります。タスクのI / Oが重い場合、パフォーマンスは選択したハードウェアによって異なります。KVMには、準仮想化ドライバー(virtio)があり、エミュレートされたデバイス(E1000 NICやLSI SCSIディスクコントローラーなど)のドライバーを大幅に超えることができます。一般に、それらは適度に近いはずです。
Jonathon Reinhart

6

これに対する単一の良い答えはありません。それは、VMの使用方法とプログラムに大きく依存します。

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

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

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


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


これらのプログラムのほとんどは、本質的に言語をCコードに変換してコンパイルします。シミュレーションを実行すると、このコンパイルが実行されます。あなたに同意します、それでそれは大丈夫でしょうか?
アーレロビッチ

パフォーマンスは大丈夫だと思います。私の仮想ボックスエクスペリエンスは限られています(私は主にVMwareワークステーションを使用しました)が、それが遅くなる技術的な理由はわかりません。
Hennes、2016

パフォーマンスに関して、KVMはVirtualBoxとどのように比較されますか(LinuxシステムでWindows 10を実行しているとしましょう)。
Royi

5

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

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

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


これを試してみたいと思って、始めに手助けが必要なら、私に知らせてください。
Jonathon Reinhart

おかげで、これはずっと前のことであり、移動を行うことを決定しました。ただし、con CentOSの実行に問題があるプログラムを実行する必要がある場合は、これを考慮します。
aarelovich
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.