[libvirt] [PATCH 4/8] qemu: Enable KVM when probing capabilities

Daniel P. Berrange berrange at redhat.com
Tue Nov 8 14:19:01 UTC 2016


On Tue, Nov 08, 2016 at 03:02:31PM +0100, Pavel Hrdina wrote:
> On Wed, Nov 02, 2016 at 10:22:33AM +0100, Jiri Denemark wrote:
> > CPU related capabilities may differ depending on accelerator used when
> > probing. Let's use KVM if available and fall back to TCG.
> > 
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> > ---
> > 
> > Notes:
> >     Or should we perhaps start probing QEMU in both TCG and KVM
> >     mode since some capabilities may actually differ depending on
> >     the accelerator? Probing QEMU twice for both TCG and KVM would
> >     be cleaner and we could real capabilities for both QEMU and KVM
> >     domain types. And the two ugly patches at the end of this series
> >     would not be needed anymore. However running QEMU twice was
> >     always considered harmful, which is why I came up with this a bit
> >     ugly solution.
> 
> As we've discussed this outside of mailing list, QEMU is planing to rewrite the
> way how they initialize itself and we will be able to probe TCG and KVM
> differences no matter what accel was used to start the QEMU process.  This means
> that we will have to store the difference somehow for both TCG and KVM.
> 
> As you've mentioned it would be cleaner solution to have both capabilities
> available so I would say that we should go for it.  To reduce the impact of
> probing twice (until QEMU rewrites the probing) we can probe only once for
> the best capabilities (KVM if available otherwise for TCG) and probe for the
> second one only when it is explicitly required by some guest.  In most cases
> during libvirtd lifetime there are only KVM or TCG guests.
> 
> Note: adding Dan to CC for his opinion.

NB, the reason we don't want to run each QEMU binary more than once to probe
features is that it quickly becomes non-scalable due to combinatorial expansion.
We already have 28 system emulators, and so running QEMU twice would mean 56
invokations, three times gives 84 invokations, etc.

KVM is a little bit special though. Out of those 28 binaries, at most 2 of
them can be run in KVM mode - eg on x86_64 host, only the x86_64 and i686
system emulators can run KVM - all the others are 100% TCG based.

So in the very special case of KVM, I think it is acceptable to run QEMU
twice, as this is not creating a combinatorial expansion in number of
emulators we must invoke - it adds at most 2 extra invokations.


Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://entangle-photo.org       -o-    http://search.cpan.org/~danberr/ :|




More information about the libvir-list mailing list