web-dev-qa-db-ja.com

QEMUエミュレーションを最適化するためのオプション(-cpuフラグ)

私はQEMUの最適化について読んでいますが、混乱しているのは-cpuスイッチです。

現時点では、すべてのホストのCPU機能をゲストに転送することになっている-cpu Hostを使用していますが、それ以上のことを行い、ホストがサポートしていない可能性のある追加機能をゲストに提供すると言う人もいます。これにより、VMの速度が低下する可能性のある機能のソフトウェアエミュレーションが発生します。

別の記事( http://forum.ipfire.org/viewtopic.php?t=12642 )は、qemu32 cpuオプションを使用し、プロセッサ固有の追加オプションをすべて追加することを示しています。ホストはそれをサポートします。

実際に仮想プロセッサをより適切に最適化する方法はどれですか?また、qemu32プロセッサがすでに実装している特定のフラグがあり、手動で含める必要はありませんか、それとも/proc/cpuinfoのすべてのフラグを含める必要がありますか?同様に、64ビットゲストを実行している場合、qemu32仮想プロセッサを使用する必要がありますか?

助けてくれてありがとう。

2
user315225

まず、私はあなたがインターネットで読んだすべてを信じることはできません。それのほとんどはがらくたです。

ただし、-cpu Hostは実際にあなたが説明したように動作するようです。少なくとも、qemuのwikiの note は、そのように動作することを意図していると述べています。

有効にできるすべて:ホストに存在しないがエミュレートできるビットを含め、有効にできるすべてのビットを有効にします。

-cpu Hostは「有効にできるすべて」モードになり、VCPUのGET_SUPPORTED_CPUIDからすべてのビットを有効にします。

また、CPUモデルをさらに制御したい場合は、libvirtが最適な方法であるとも述べています。

そして、第二に、非常にまれな状況以外では、qemuを自分で直接実行しようとはしませんでした。むしろ、libvirt(推奨)と、virshやvirt-managerなどのフロントエンドの1つを使用することをお勧めします。これらは、はるかに使いやすいインターフェイス(virt-managerの場合)で仮想マシンを完全に制御できるためです。 )。

virt-manager processor configuration

特に、libvirtは capable 必要なことを実行します。存在せず、エミュレートする必要がある機能を有効にせずに、ホストCPU機能をゲストに正確にコピーします(ただし、Host-passthroughを使用)ほとんどの場合、Host-modelで十分です)。

Qemu32に関しては、qemuのdefaultはqemu64であるため、これをqemu32に変更しても、おそらく片頭痛を除いて、何が得られるかわかりません。

1
Michael Hampton