<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi,<br>
    <br>
    As part of an European (FP7) project, named ORBIT (<a
      href="http://www.orbitproject.eu/" target="_blank">http://www.orbitproject.eu/</a>),
    I'm working on including the possibility of live-migrating VMs in
    OpenStack in a post-copy mode.<br>
    This way of live-migrating VMs basically moves the computation right
    away to the destination and then the VM starts working from there,
    while still copying the memory from the source to the new location
    of the VM. That way the memory pages are only copied as if the VM
    modifies them, they are already in the destination host. This
    basically ensures that migrations finish regardless of what the VM
    is doing, i.e., even extremely memory intensive VMs. Therefore
    removing the problem of having VMs hanging on in migrating state
    forever (as discussed in previous mails, e.g., <a
href="http://lists.openstack.org/pipermail/openstack-dev/2015-February/055725.html"
      target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2015-February/055725.html</a>).<br>
    <br>
    So far, I have included and tested this new functionality at the
    JUNO version, and the code modifications can be found in the github
    repository of the project (branch named "post-copy"):<br>
        - <a href="https://github.com/orbitfp7/nova/tree/post-copy"
      target="_blank">https://github.com/orbitfp7/nova/tree/post-copy</a>
    --> mainly enabling the possibility of using the libvirt
    post-copy flag (libvirt driver.py). Note post-copy migration is not
    using "tunneling" as LibVirt patch for that is not yet ready.<br>
        - <a
      href="https://github.com/orbitfp7/python-novaclient/tree/post-copy"
      target="_blank">https://github.com/orbitfp7/python-novaclient/tree/post-copy</a>
    --> adding the possibility of using the post-copy mode when
    triggering the migration: nova live-migration [--block-migrate]
    [--post-copy] VM_ID<br>
        - <a href="https://github.com/orbitfp7/horizon/tree/post-copy"
      target="_blank">https://github.com/orbitfp7/horizon/tree/post-copy</a>
    --> include a checkbox in the live-migration panel to perform the
    migration in post-copy mode. (like the one for enabling
    block-migration)<br>
    <br>
    To be able to live-migrate VMs in a post-copy way, I'm relying on
    some kernel+qemu+libvirt modifications, not yet merged upstream (but
    in their way to it), also available at the project github:<br>
        - Kernel: <a href="https://lkml.org/lkml/2015/3/5/576"
      target="_blank">https://lkml.org/lkml/2015/3/5/576</a><br>
        - Qemu: <a
      href="https://github.com/orbitfp7/qemu/tree/wp3-postcopy"
      target="_blank">https://github.com/orbitfp7/qemu/tree/wp3-postcopy</a><br>
        - LibVirt: <a
      href="https://github.com/orbitfp7/libvirt/tree/wp3-postcopy"
      target="_blank">https://github.com/orbitfp7/libvirt/tree/wp3-postcopy</a><br>
    <br>
    If this is a nice feature to have in future versions of OpenStack,
    I'm happy to adapt the code for the next release (the one after
    KILO). Any comments are really welcome.<br>
    <br>
    Best regards,<br>
    Luis<br>
    <br>
    <pre class="moz-signature" cols="72">-- 
-----------------------------------
Dr. Luis Tomás
Postdoctoral Researcher
Department of Computing Science
Umeĺ University
<a class="moz-txt-link-abbreviated" href="mailto:luis@cs.umu.se">luis@cs.umu.se</a>
<a class="moz-txt-link-abbreviated" href="http://www.cloudresearch.se">www.cloudresearch.se</a>
www8.cs.umu.se/~luis
------------------------------------</pre>
  </body>
</html>