Hi all,

Based on Live Migration IRC meeting discussions, I've uploaded an updated patch set for the "add post-copy live migration support to Nova" specs (https://review.openstack.org/#/c/301509/). Based on that discussions, the proposed way of including the post-copy live migration capability is the next:

- To enable the use of post-copy, a new config option will be made available at nova.conf, `live_migration_postcopy`, similarly to`live_migration_tunnelled`one. If `True`, the
libvirt postcopy flag `VIR_MIGRATE_POSTCOPY` will be used, if supported,
making the migration ready to be switched to post-copy mode.

- To trigger the switch to post-copy mode, an automatic mechanism will be implemented based on the number of memory iterations done by the ongoing migration. When the number of iterations is greater than a defined threshold, the switch will be triggered.

- Similarly to the `live_migration_bandwidth` parameter, the number of memory iterations before the switch to postcopy will be defined in another configuration parameter named `live_migration_postcopy_max_iterations`, allowing a more or less aggressive switch to post-copy. For instance, it could be set to a small number (even 0) for evacuation purposes, minimizing the amount of network traffic.

Any input/review of the updated patch set is really welcome.

Thanks,
Luis


On 04/05/2016 05:17 PM, Luis Tomas wrote:
Hi,

We are working on the possibility of including post-copy live migration into Nova (https://review.openstack.org/#/c/301509/)

At libvirt level, post-copy live migration works as follow:
- Start live migration with a post-copy enabler flag (VIR_MIGRATE_POSTCOPY). Note this does not mean the migration is performed in post-copy mode, just that you can switch it to post-copy at any given time.
    - Change the migration from pre-copy to post-copy mode.

However, we are not sure what's the most convenient way of providing this functionality at Nova level. The current specs, propose to include an optional flag at the live migration API to include the VIR_MIGRATE_POSTCOPY flag when starting the live migration. Then we propose a second API to actually switch the migration from pre-copy to post-copy mode similarly to how it is done in LibVirt. This is also similar to how the new "force-migrate" option works to ensure migrations completion. In fact, this method could be an extension of the force-migrate, by switching to postcopy if the migration was started with the VIR_MIGRATE_POSTCOPY libvirt flag, or pause it otherwise.

The cons of this approach are that we expose a too specific mechanism through the API. To alleviate this, we could remove the "switch" API, and automatize the switch based on data transferred, available bandwidth or other related metrics. However we will still need the extension to the live-migration API to include the proper libvirt postcopy flag.

The other solution is to start all the migrations with the VIR_MIGRATE_POSTCOPY mode, and therefore no new APIs would be needed. The system could automatically detect the migration is taking too long (or is dirting memory faster than the sending rate), and automatically switch to post-copy.

The cons of this is that including the VIR_MIGRATE_POSTCOPY flag has an overhead, and it will not be desirable to included for all migrations, specially is they can be nicely migrated with pre-copy mode. In addition, if the migration fails after the switching, the VM will be lost. Therefore, admins may want to ensure that post-copy is not used for some specific VMs.

I would like to know your opinion in this? What option would be preferred? Is there a different option we are missing?

Thanks!

Best regards,
Luis



--
-----------------------------------
Dr. Luis Tomás
Postdoctoral Researcher
Department of Computing Science
Umeå University
l...@cs.umu.se
www.cloudresearch.se
www8.cs.umu.se/~luis
------------------------------------

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to