QEMUのパフォーマンスは(まだ)VirtualBoxを下回っていますか?ハードウェアサポート+ kvmカーネルモジュールなしでそれを改善する方法はありますか?


9

QEMUはVirtualBoxよりも遅い(ハードウェアアシスタンスなし)と主張している記事がいくつかありますが、いくつかは古いもので、最新のものは昨年のものであるようです。

  • QEMUがVirtualBoxより遅いのは本当ですか?
  • もしそうなら、なぜですか?
  • パフォーマンスのギャップを埋めるためのトリックはありますか?

一部のホストシステムにはハードウェア仮想化サポートがないため、カーネルモジュールなしで機能するパフォーマンスのヒントに特に興味があります。

回答:


10

x86ホストでのx86仮想化について話している場合、kqemu(qemuの古いアクセラレーションカーネルモジュール)は非推奨になっていることに注意してください。カーネル仮想マシン(KVM)は「進むべき道」ですが、Linuxホストでのみ機能します。ゲストは、x86アーキテクチャである限り、どのようなOSでもかまいません。

クロスアーキテクチャ、qemuはまだ非常に遅いです。今日だけ私はゲストでDebian MIPS64を使って最新のqemuを試していました...それはターミナルから使用できましたが、Xorgではひどく遅いです。私の知る限りでは、クロスアーキテクチャを使用する場合、拡張ページテーブルやVT-xなどのプロセッサアクセラレーション命令は使用できません。すべてソフトウェアでエミュレートされます。

したがって、x86から​​x86への仮想化では、「生の」qemuは低速ですが、KVM(qemu を使用)は高速です。かなり速いです。非常に高速なので、RHELに推奨される仮想化ソリューションはRed Hatです。

kvmはサーバーの仮想化に焦点を当て、virtualboxはデスクトップの仮想化に焦点を当てているため、VirtualBoxは、ハードウェアアクセラレーションによる2D / 3Dグラフィックスパフォーマンスに関してqemu / kvmが提供できるすべてのものを吹き飛ばします。ただし、サーバーを扱う場合は、kvmをチェックすることをお勧めします。

編集:ハードウェアアクセラレーションがないホストの場合、使用する仮想ソリューションに関係なく、かなり大きなオーバーヘッドに悩まされることになります。ソフトウェアでハードウェアのものをエミュレートすることは難しく、費用がかかります。


2
ls $(which kvm)へのシンボリックリンクを示しますqemu-system-x86_64。QEMUを使用してKVMについて話していたのは、まさにそれだと思いますか?
Catskul 2012

はい。ただし、KVMは、その名前が示すように、カーネルベースの仮想マシンです。つまり、ハイパーバイザーのガットは、カーネルモジュール「kvm」にあります。必要に応じて、古いkqemuに似ていると考えることができますが、構造的には非常に異なります。qemuは、kvmが動作しているときの実際のハイパーバイザーよりもフロントエンドです。
allquixotic 2012

ああ、私が追加するのを忘れていました:「カーネルモジュール」がないとqemu(および他の仮想化システム)が非常に遅い理由(あなたが言ったように、あなたが本当に意味するのは「ハードウェアアクセラレーションなし」)は、特定のハードウェア操作がゲストが実行することは、ソフトウェアでエミュレートするのが非常に困難です。まあ、信頼性や複雑さの点で難しいことではありません。ただsloooooooooooooooow。それが、VT-xとEPTの方法で仮想化の最も遅いビットのためのハードウェアアクセラレーション命令を提供するためにIntelが10年の大半を費やした理由です。唯一の修正は、これらの命令セットをサポートするハードウェアを使用することです。
allquixotic 2012

ハードウェアアクセラレーションがなくても、virtualboxを高速化するものはありますか?
Catskul

いいえ。ハードウェアアクセラレーションがなければ、パフォーマンスはほぼ同じになります。VirtualBoxの高度なx86最適化により、ソフトウェアでの実行がわずかに速くなる可能性があります。これは、virtualboxがそもそもx86しかサポートしていないため、qemuの方がはるかに幅広い分野(非x86アーキテクチャ)に適しているためです。しかし、これは基本的にキャッシュの局所性、最適化された内部ループ、手動でコード化されたアセンブラ、ホスト側のディスクI / Oキャッシュ、またはその他のトリックに帰着する実装/設計の詳細です。vboxがqemuが行わないこれらのことをどの程度行うかは
わかり

1

仮想化対応のCPU(Intel VT-x、AMD SVM)を搭載し、カーネル(KVMを搭載したLinux)でQemuを実行しているホストを想定すると、かなり高速です。

Qemuが2D(youtube、スプレッドシート、ゲーム)と3Dエミュレーションで遅いという技術的な理由は私にはわかりません。ただし、「ビデオドライバー」だけでは不十分であると推測できます。ハードウェア内のグラフィックハードウェアが最適な方法で使用されていません。

明るい面として、最近の開発により、SPICEフレームワークがqemuに導入されました。実際には数年経ち、かなり成熟しているようです。QXLビデオドライバーで実行することによるビデオパフォーマンスの利点は、私の経験(2D Web開発)で非常に大きくなっています。Virtualboxと比べてどれだけ優れているかはわかりませんが、それは間違いなく改善です。SPICEは、QemuでWindowsを実行しているすべての人にとってなくてはならないものだと思います。

これは私の意見であり、ゲストで3Dまたはビデオの再生を実行しようとしたことは一度もないことに注意してください。


1
「グラフィック指向のエミュレーション」によって3Dアクセラレーションを参照する場合、それはGPUがCPUのように仮想化できないためです。ソフトウェアエミュレーションは非常に遅いため、現在2つのソリューションがあります。1。APIパススルー(つまり、ゲストのDirectX呼び出しはホストでDirectX呼び出しとして実行されます)2. VGAパススルー(本当のこと:グラフィックカード全体が利用可能になります)ゲストへ)。QEMUは#2をサポートしています。
Marcus

@Marcus Passthroughがその先への道です。
ЯрославРахматуллин
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.