On 01/16/2012 01:59 PM, Jiri Denemark wrote: > On Mon, Jan 16, 2012 at 13:38:00 -0700, Eric Blake wrote: >> On 01/12/2012 04:02 AM, Jiri Denemark wrote: >>> The mode can be either of "custom" (default), "host-model", >>> "host-passthrough". The semantics of each mode is described in the >>> following examples: >>> >> >>> + <dt><code>host-model</code></dt> >>> + <dd>The <code>host-model</code> mode is essentially a shortcut to >>> + copying host CPU definition from capabilities XML into domain XML. >>> + Since the CPU definition is copied just before starting a domain, >>> + exactly the same XML can be used on different hosts while still >>> + providing the best guest CPU each host supports. Neither >>> + <code>match</code> attribute nor any <code>feature</code> elements >>> + can be used in this mode. Specifying CPU model is not supported >>> + either, but <code>model</code>'s <code>fallback</code> attribute may >>> + still be used. Libvirt does not model every aspect of each CPU so >>> + the guest CPU will not match the host CPU exactly. On the other >>> + hand, the ABI provided to the guest is reproducible. During >>> + migration, complete CPU model definition is transferred to the >>> + destination host so the migrated guest will see exactly the same CPU >>> + model even if the destination host contains more capable CPUs.</dd> >> >> Question - if I start on a less-powerful CPU, then live migrate to a >> more powerful CPU, then restart the guest, did the migration lock me in >> to the less-powerful capabilities, or does restarting the guest then >> pick up on the more-powerful capabilities? I'm guessing the former >> (once you migrate, you want to be locked in), because otherwise, the act >> of migration followed by guest reboot would make Windows guests >> susceptible to reactivation. In which case, I think rewording the last >> sentence might help: > > It depends what do you mean by guest restart :-) Restarting guest OS within > the same qemu process certainly doesn't change anything. However, the CPU may > change if you shut the domain down and start it again. The updated CPU is not > persistently stored anywhere even if you ask libvirt to define the domain on > destination. The inactive XML on destination will be the same as the one > on source. The main benefit of host-* CPU modes is that they give you the > semantics of "anywhere you start me, I'll use the best of your CPUs", be it > after migration or manual copying of the XML. It is only assured not to change > while the guest is running even after it's migrated. Those who want stability > may use the custom mode we already support for ~2 years. > > Do you suggest any changes so that it's more obvious from the docs? How about: custom In this mode, the <code>cpu</code> element describes the CPU that should be presented to the guest. This is the default when no <code>mode</code> attribute is specified. This mode makes it so that a persistent guest will see the same hardware, and thus avoid the need for operating system reactivation, no matter what host the guest is booted on. host-model The <code>host-model</code> mode is essentially a shortcut to copying host CPU definition from capabilities XML into domain XML. Since the CPU definition is copied just before starting a domain, exactly the same XML can be used on different hosts while still providing the best guest CPU each host supports. Neither <code>match</code> attribute nor any <code>feature</code> elements can be used in this mode. Specifying CPU model is not supported either, but <code>model</code>'s <code>fallback</code> attribute may still be used. Libvirt does not model every aspect of each CPU so the guest CPU will not match the host CPU exactly. On the other hand, the ABI provided to the guest is reproducible. During migration, complete CPU model definition is transferred to the destination host so the migrated guest will see exactly the same CPU model even if the destination host contains more capable CPUs for the running instance of the guest; but shutting down and restarting the guest may present different hardware to the guest according to the capabilities of the new host, and thus trigger an operating system reactivation. host-passthrough ... In both <code>host-model</code> and <code>host-passthrough</code> mode, the real (approximate in <code>host-passthrough</code> mode) CPU definition which would be used on current host can be determined by specifying <code>VIR_DOMAIN_XML_UPDATE_CPU</code> flag when calling <code>virDomainGetXMLDesc</code>. When running a guest that might be prone to operating system reactivation when presented with different hardware, and which will be migrated between hosts with different capabilities, you can use this output to rewrite XML to the <code>custom</code> mode for more robust migration. -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list