
私の職場では、Debian Linux ディストリビューションを使用して比較的高性能な PC を実行しています。ただし、インストールする必要のある特定のプログラムについては CentOS を使用する方がよいため、これらが主な作業ツールになります。職場のすべてのコンピューターの OS を変更することは可能ですが、シンプルさの点から VirtualBox を使用する方がよいかどうかを検討中です。
これはすべて次の点にかかっています。実行する必要があるプログラムはシミュレーターであり、これはプロセッサを非常に集中的に使用するタスクであり、シミュレーションが起動されるたびに 1 時間以上かかることもあります。Virtual Box を使用した場合のパフォーマンスの低下が OS の変更に値するほど大きいかどうかを判断する必要があります。
そこで私の質問は、プロセッサを集中的に使用するタスクを仮想ボックスで実行した場合とネイティブ PC で実行した場合のパフォーマンスの低下がどの程度かを検証して教えてくれる人がいたら教えてください。
ありがとう。
答え1
数値計算プログラム(CPU に大きく依存)の場合、VM のパフォーマンスへの影響はほぼゼロになります。命令は CPU 上で直接実行されますが、これはホストと VM で同じです。
本格的なコンパイル タスクでも、パフォーマンスの違いはほとんど目立ちません。Windows 上の VMware で CentOS VM を実行しています。
ホスト上でLinuxを実行している場合は、次のことも検討してください。仮想化(カーネル仮想マシン) は、VirtualBox の代わりに使用できます。これは、ほとんどすべての最新 CPU で利用可能な Intel VT-x 仮想化拡張機能を使用して、Linux で仮想化サービスを提供する一連のカーネル モジュールです。QEMU は、KVM をアクセラレータとして使用して、ホスト CPU 上で x86 コードを直接実行します。
インストールしてvirt-manager
試してみましょう。
答え2
実際、あなたが行っていることに対して、Docker はさらに良い選択肢であるように思えます。Docker は、同じカーネル上で実行される分離されたサンドボックスであるコンテナを提供します。コンテナ内のプロセスはホスト上のプロセスと変わらないため、システム コール/IO オーバーヘッドはゼロです。
すでに Linux を実行している場合、Docker はすべてのマシンを再インストールせずに CentOS 環境を提供するのに最適な方法です。
また、私のユーティリティもチェックしてください。スキューバこれにより、Docker コンテナ内でビルドなどを簡単に実行できるようになります。 を実行する代わりに、make
を実行しますscuba make
。それだけです。
答え3
これに対する唯一の良い答えはありません。VM の使用方法とプログラムによって大きく異なります。
たとえば、VMWare (タイプ 2 ハイパーバイザー) と純粋に CPU にバインドされたプログラムを使用すると、CPU 速度がほぼ最大限に発揮されます。同じハイパーバイザーをシステム コールの多いプログラムで使用すると、速度が大幅に低下します。
また、タイプ 1 ハイパーバイザー (ゲストなし) OS を使用すると状況も変わります。また、それらの OS 間でも多くのバリエーションがあります。たとえば、Xen には 5 つのモード (先週末の FOSDEM での Xen に関する講演で覚えている限り) がサポートされています。HW 使用から準仮想化まで。
要約すると、質問のとおり、速度低下はほとんどない状態から、大幅に遅くなる状態までさまざまです。
ここで、VirtualBox に焦点を当てると、これはタイプ 2 ハイパーバイザーです。純粋に CPU バウンドのプログラムであれば問題ないはずです。