[libvirt] CPU type/flags when converting a physical machine to run on libvirt

Richard W.M. Jones rjones at redhat.com
Fri May 2 12:07:05 UTC 2014


I'm in the process of rewriting virt-p2v which is our program for
converting physical machines to become virtual machines, running on
top of libvirt + KVM.

The physical machine has certain characteristics -- eg:

 - number of physical cores
 - amount of RAM
 - CPU type (eg. AMD Opteron, Intel Core i7)
 - CPU flags (eg. ACPI, SSE4)

which it might make sense to reflect in the libvirt XML of the virtual
machine we create.

The old version of virt-p2v is pretty simplistic about this.  It
generates *only* an i386 or x86-64 VM, and the only flags it considers
are 'apic', 'acpi', 'pae' and 'lm' [the latter to distinguish between
32 and 64 bit x86].

What should the new version do?

Particular questions:

 - Should we try to reflect the CPU type of the physical machine in
   the virtual machine?  eg. If it's an Opteron, we generate an
   Opteron target machine.  (I believe the answer is *no*, because
   this is not live migration, and most guests can boot on any
   compatible CPU).

 - How can I ask libvirt to give me the best possible CPU, and not
   some baseline?  Normally I use host-model, but I think that
   prevents migration.

 - What CPU flags should be reflected in the target libvirt XML?

 - Is it worth modelling CPU thread layout?  (I suspect this will be a
   lot of work with the potential to break things rather than provide
   any measurable benefits.)

 - Is there anything else I haven't thought about?

However the overriding rule is:

 - We *must not* end up with a target virtual machine which doesn't work!

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v




More information about the libvir-list mailing list