{"id":614,"date":"2017-10-01T16:32:00","date_gmt":"2017-10-01T14:32:00","guid":{"rendered":"https:\/\/lisas.de\/~adrian\/posts\/2017-Oct-01-lazy-migration-in-crius-master-branch.html"},"modified":"2026-03-30T22:41:24","modified_gmt":"2026-03-30T20:41:24","slug":"lazy-migration-in-crius-master-branch-2","status":"publish","type":"post","link":"https:\/\/lisas.de\/luges\/index.php\/2017\/10\/01\/lazy-migration-in-crius-master-branch-2\/","title":{"rendered":"Lazy Migration in CRIU&#8217;s master branch"},"content":{"rendered":"<p>For almost two years Mike Rapoport and I have been working on lazy process migration. Lazy process migration (or post-copy migration) is a technique to decrease the process or container downtime during the live migration. I described the basic functionality in the following previous articles:<\/p>\n<ul>\n<li><a href=\"https:\/\/lisas.de\/~adrian\/?p=1183\">Lazy Process Migration<\/a><\/li>\n<li><a href=\"https:\/\/lisas.de\/%7Eadrian\/?p=1253\">Combining pre-copy and post-copy migration<\/a><\/li>\n<\/ul>\n<p>Those articles are not 100% correct anymore as we changed some of the parameters during the last two years, but the concepts stayed the same.<\/p>\n<p>Mike and I started about two years ago to work on it and the latest <a href=\"https:\/\/criu.org\/\">CRIU<\/a> <a href=\"https:\/\/criu.org\/Download\/criu\/3.5\">release (3.5)<\/a> includes the possibility to use lazy migration. Now that the post-copy migration feature has been merged from the <em>criu-dev<\/em> branch to the <em>master<\/em> branch it is part of the normal CRIU releases.<\/p>\n<p>With CRIU&#8217;s 3.5 release lazy migration can be used on any kernel which supports <a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/vm\/userfaultfd.txt\">userfaultfd<\/a>. I already updated the CRIU packages in Fedora to 3.5 so that lazy process migration can be used just by installing the latest CRIU packages with <em>dnf<\/em> (still in the testing repository right now).<\/p>\n<p>More information about container live migration in our upcoming Open Source Summit Europe talk: <a href=\"https:\/\/osseu17.sched.com\/event\/BxIG\/container-migration-around-the-world-adrian-reber-red-hat-and-mike-rapoport-ibm-research\">Container Migration Around The World<\/a>.<\/p>\n<p>My <a href=\"https:\/\/github.com\/opencontainers\/runc\/pull\/1541\">pull request<\/a> to support lazy migration in <a href=\"https:\/\/github.com\/opencontainers\/runc\/\">runC<\/a> was also recently merged, so that it is now possible to migrate containers using pre-copy migration and post-copy migration. It can also be combined.<\/p>\n<p>Another interesting change about CRIU is that it started as <em>x86_64<\/em> only and now it is also available on <em>aarch64<\/em>, <em>ppc64le<\/em> and <em>s390x<\/em>. The support to run on <em>s390x<\/em> has just been added with the previous 3.4 release and starting with Fedora 27 the necessary kernel configuration options are also active on <em>s390x<\/em> in addition to the other supported architectures.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For almost two years Mike Rapoport and I have been working on lazy process migration. Lazy process migration (or post-copy migration) is a technique to decrease the process or container downtime during the live migration. I described the basic functionality in the following previous articles: Lazy Process Migration Combining pre-copy and post-copy migration Those articles [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-614","post","type-post","status-publish","format-standard","hentry","category-luges"],"_links":{"self":[{"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/posts\/614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/comments?post=614"}],"version-history":[{"count":4,"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/posts\/614\/revisions"}],"predecessor-version":[{"id":1301,"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/posts\/614\/revisions\/1301"}],"wp:attachment":[{"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/media?parent=614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/categories?post=614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lisas.de\/luges\/index.php\/wp-json\/wp\/v2\/tags?post=614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}