{"id":6980,"date":"2014-12-09T13:08:14","date_gmt":"2014-12-09T11:08:14","guid":{"rendered":"http:\/\/blog.zhaw.ch\/icclab\/?p=6980"},"modified":"2014-12-09T13:08:14","modified_gmt":"2014-12-09T11:08:14","slug":"performance-analysis-of-post-copy-live-migration-in-openstack","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/","title":{"rendered":"Performance analysis of &#8220;post-copy&#8221; live migration in Openstack"},"content":{"rendered":"<p><a href=\"http:\/\/blog.zhaw.ch\/icclab\/setting-up-post-copy-live-migration-in-openstack\/\">Previously<\/a> we described how to \u00a0set up <a href=\"http:\/\/en.wikipedia.org\/wiki\/Live_migration\">post-copy live migration<\/a> in <a href=\"http:\/\/www.openstack.org\/\">OpenStack<\/a> <a href=\"http:\/\/www.openstack.org\/software\/icehouse\/\">Icehouse<\/a> (and it should not be a problem to set it up in the same way in <a href=\"http:\/\/www.openstack.org\/software\/juno\/\">Juno<\/a>). Naturally, \u00a0we were curious to see how it performs. In this blog post we focus on performance analysis of post-copy live migration in Openstack Icehouse using <a href=\"http:\/\/wiki.qemu.org\/Main_Page\">QEMU<\/a> \/ <a href=\"http:\/\/www.linux-kvm.org\/page\/Main_Page\">KVM<\/a> with <a href=\"http:\/\/libvirt.org\/\">libvirt<\/a>.<!--more--><\/p>\n<p>Generally, when we consider virtual machine live migration the most important performance characteristics are migration time, VM down time and the amount of data transferred via network. The reliability and predictability of the migration process are also important and they are also discussed here. Regarding the migration time, we measure the duration of the live migration using time stamps recorded in nova-compute logs (<em>\/var\/log\/nova\/nova-compute.log<\/em>) on source and destination hosts. We used the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Iftop\">iftop<\/a> tool for measuring amount of transferred data and the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Ping_(networking_utility)\">ping<\/a> tool to determine the VM downtime; we pinged the VM public interface every 100ms (<em>ping -i 0.1 &lt;vm.float.ing.ip&gt;<\/em>) from a machine outside the network and track the packets lost during the migration to make the calculation.<\/p>\n<p>All experiments were done on our mid-range 3-node experimental OpenStack Icehouse deployment (1x controller and 2x compute) using <a href=\"https:\/\/github.com\/orbitfp7\/qemu\/tree\/wp3-postcopy\">wp3-postcopy branch of QEMU 2.1.5<\/a>. and <a href=\"https:\/\/git.cs.umu.se\/cklein\/libvirt\/commits\/wp3-postcopy\">wp3-postcopy branch of Libvirt 1.2.11<\/a>. All nodes are the same <a href=\"http:\/\/www-03.ibm.com\/systems\/x\/hardware\/rack\/x3550m4\/\">IBM x3550 m4<\/a> servers using 24 VCPUs, 192 GB RAM, 2.7 TB storage and 1Gb\/s ethernet interfaces. Note that live migration performance strongly depends on your hardware system setup (especially network throughput) and even though the results in in your environment may differ, this blog post should give you a sneak peak to the state-of-the-art live migration mechanism.<\/p>\n<p>The main advantage of post-copy live migration is that it is guaranteed to terminate (unlike pre-copy which can result in a neverending migration in some cases). However, it is inherently less robust and any network interruption can cause VM failure. For these reasons Libvirt introduces a hybrid approach to live migration which is actually a combination of more traditional pre-copy migration followed by a phase of post-copy migration. In the ideal case the combination of pre-copy and post-copy guarantees finite migration convergence while minimizing the duration of the network-failure sensitive post-copy phase. The current implementation performs one iteration of pre-copy and then switches to the post-copy mode. That means that VMs with low memory change rate are safely migrated during the pre-copy phase and there is almost no need to perform the post-copy phase which focuses on changes to memory which occur during the migration process. If you are interested in knowing a bit more about the difference between standard <a href=\"http:\/\/en.wikipedia.org\/wiki\/Live_migration#Pre-copy_memory_migration\">pre-copy<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Live_migration#Post-copy_memory_migration\">post-copy<\/a> live migration mechanisms you can read our <a href=\"http:\/\/blog.zhaw.ch\/icclab\/post-copy-live-migration-in-qemu\/\">earlier blog post<\/a>.<\/p>\n<p>It should be noted we observed that the migration process was very reliable in all experiments (unlike some of the earlier we performed using older versions of QEMU and Libvirt).<\/p>\n<p><b>Hybrid live migration of unloaded instances<\/b><\/p>\n<p>First of all we focused on basic live migration of freshly spawned VMs running a cloud image of <a href=\"http:\/\/www.ubuntu.com\/\">Ubuntu<\/a> 14.04 within different standard OpenStack flavors (from \u201csmall\u201d to \u201cextra large\u201d &#8211; see table 1).<\/p>\n<table>\n<tbody>\n<tr>\n<td>Flavor<\/td>\n<td style=\"text-align: center\">s<\/td>\n<td style=\"text-align: center\">m<\/td>\n<td style=\"text-align: center\">l<\/td>\n<td style=\"text-align: center\">xl<\/td>\n<\/tr>\n<tr>\n<td>VCPU (#)<\/td>\n<td style=\"text-align: center\">1<\/td>\n<td style=\"text-align: center\">2<\/td>\n<td style=\"text-align: center\">4<\/td>\n<td style=\"text-align: center\">8<\/td>\n<\/tr>\n<tr>\n<td>RAM (GB)<\/td>\n<td style=\"text-align: center\">2<\/td>\n<td style=\"text-align: center\">4<\/td>\n<td style=\"text-align: center\">8<\/td>\n<td style=\"text-align: center\">16<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center\">Table 1 &#8211; Parameters of the Openstack Flavors used<\/p>\n<p>On average we were able to migrate small flavored instances in approximately 5.5 seconds (385 MB transferred), medium in 7.2 s (435 MB), large in 8.7 s (530 MB) and x-large in 11.3 s (680 MB). We can clearly see that not the all available RAM in the VM is transferred but just the part of the memory that has already been allocated. The downtime in all cases was less than 0.3 seconds.<\/p>\n<table>\n<tbody>\n<tr>\n<td>Flavor<\/td>\n<td style=\"text-align: center\">s<\/td>\n<td style=\"text-align: center\">m<\/td>\n<td style=\"text-align: center\">l<\/td>\n<td style=\"text-align: center\">xl<\/td>\n<\/tr>\n<tr>\n<td>Migration time [s]<\/td>\n<td style=\"text-align: center\">5.4<\/td>\n<td style=\"text-align: center\">7<\/td>\n<td style=\"text-align: center\">8.7<\/td>\n<td style=\"text-align: center\">11.3<\/td>\n<\/tr>\n<tr>\n<td>Downtime [s]<\/td>\n<td style=\"text-align: center\">0.2<\/td>\n<td style=\"text-align: center\">0.2<\/td>\n<td style=\"text-align: center\">0.2<\/td>\n<td style=\"text-align: center\">0.3<\/td>\n<\/tr>\n<tr>\n<td>Transferred data [MB]<\/td>\n<td style=\"text-align: center\">385<\/td>\n<td style=\"text-align: center\">435<\/td>\n<td style=\"text-align: center\">530<\/td>\n<td style=\"text-align: center\">681<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center\">Table 2 &#8211; Unloaded VM hybrid live migration performance<\/p>\n<figure id=\"attachment_6986\" aria-describedby=\"caption-attachment-6986\" style=\"width: 605px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data256.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6986 size-full\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg\" alt=\"unloadedtime\" width=\"605\" height=\"340\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg 605w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime-300x168.jpg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime-500x280.jpg 500w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/a><figcaption id=\"caption-attachment-6986\" class=\"wp-caption-text\">Figure 1 &#8211; Migration time and downtime &#8211; unloaded VMs<\/figcaption><\/figure>\n<figure id=\"attachment_6985\" aria-describedby=\"caption-attachment-6985\" style=\"width: 605px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data256.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6985 size-full\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadeddata.jpg\" alt=\"unloadeddata\" width=\"605\" height=\"340\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadeddata.jpg 605w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadeddata-300x168.jpg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadeddata-500x280.jpg 500w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/a><figcaption id=\"caption-attachment-6985\" class=\"wp-caption-text\">Figure 2 &#8211; Data transfer &#8211; unloaded VMs<\/figcaption><\/figure>\n<p><b>Hybrid live migration of \u201cstressed\u201d instances<\/b><\/p>\n<p>In our <a href=\"http:\/\/blog.zhaw.ch\/icclab\/an-analysis-of-the-performance-of-live-migration-in-openstack\/\">earlier experiments<\/a> with pre-copy live migration we observed cases of unsuccessful live migration due to a high rate of change of RAM in a VM. (Remember, pre-copy live migration fails if the VM\u2019s RAM change rate is higher than source-to-destination network throughput). In these experiments, we used the stress tool to simulate intensive memory load. This tool runs a given number of threads that are periodically allocating and freeing a specified amount of memory. Our earlier experiments with stress of an x-large VM and pre-copy migration showed problems migrating instances with more than 100MB of stressed memory. We wanted to see how the new live migration approach worked in the same context \u00a0to objectively compare with our previous work.<\/p>\n<p>Unlike the pre-copy approach, the hybrid approach has an upper bound on the amount of data that will be transferred between source and destination: all used memory will be transferred during the pre-copy phase and all memory changed will be transferred <i>at most once<\/i> (unlike pre-copy) during the post-copy phase. Thus, in the worst case, \u00a0the maximum amount of migrated data is given by 2 x RAM size and maximum migration time is 2 x RAM size \/ network throughput.<\/p>\n<p>Increasing the amount of stressed memory in increments of of 256MB results in a clear linear increase of transferred data (2 x stressed memory + resources allocated by the system) and migration time (transferred data \/ network throughput).<\/p>\n<table>\n<tbody>\n<tr>\n<td>Stressed memory [MB]<\/td>\n<td style=\"text-align: center\">256<\/td>\n<td style=\"text-align: center\">512<\/td>\n<td style=\"text-align: center\">768<\/td>\n<td style=\"text-align: center\">1024<\/td>\n<td style=\"text-align: center\">1280<\/td>\n<td style=\"text-align: center\">1536<\/td>\n<td style=\"text-align: center\">1792<\/td>\n<td style=\"text-align: center\">2048<\/td>\n<\/tr>\n<tr>\n<td>Migration time [s]<\/td>\n<td style=\"text-align: center\">16.4<\/td>\n<td style=\"text-align: center\">21.3<\/td>\n<td style=\"text-align: center\">25.9<\/td>\n<td style=\"text-align: center\">30.0<\/td>\n<td style=\"text-align: center\">34.7<\/td>\n<td style=\"text-align: center\">39.7<\/td>\n<td style=\"text-align: center\">44.0<\/td>\n<td style=\"text-align: center\">48.7<\/td>\n<\/tr>\n<tr>\n<td>Transferred data [MB]<\/td>\n<td style=\"text-align: center\">1202<\/td>\n<td style=\"text-align: center\">1722<\/td>\n<td style=\"text-align: center\">2202<\/td>\n<td style=\"text-align: center\">2649<\/td>\n<td style=\"text-align: center\">3108<\/td>\n<td style=\"text-align: center\">3696<\/td>\n<td style=\"text-align: center\">4208<\/td>\n<td style=\"text-align: center\">4713<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: left\">Table 3 &#8211; Migration time and data transfer with increasing stressed memory (step of 256MB)<\/p>\n<figure id=\"attachment_6983\" aria-describedby=\"caption-attachment-6983\" style=\"width: 605px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6983 size-full\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime256.jpg\" alt=\"migtime256\" width=\"605\" height=\"340\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime256.jpg 605w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime256-300x168.jpg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime256-500x280.jpg 500w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><figcaption id=\"caption-attachment-6983\" class=\"wp-caption-text\">Figure 3 &#8211; Migration time with increasing stressed memory (steps of 256MB)<\/figcaption><\/figure>\n<figure id=\"attachment_6981\" aria-describedby=\"caption-attachment-6981\" style=\"width: 605px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data256.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6981 size-full\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data256.jpg\" alt=\"data256\" width=\"605\" height=\"340\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data256.jpg 605w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data256-300x168.jpg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data256-500x280.jpg 500w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/a><figcaption id=\"caption-attachment-6981\" class=\"wp-caption-text\">Figure 4 &#8211; Data transfer with increasing stressed memory (steps of 256MB)<\/figcaption><\/figure>\n<p>Once we were satisfied that \u00a0live migration was reliable for smaller amounts of stressed memory, we increased the increment to 1024MB \/ thread and stressed up to 8 x 1024MB of the VM\u2019s RAM and again observed the same linear increase of these variables.<\/p>\n<table>\n<tbody>\n<tr>\n<td>Stressed memory [MB]<\/td>\n<td style=\"text-align: center\">1024<\/td>\n<td style=\"text-align: center\">2048<\/td>\n<td style=\"text-align: center\">3072<\/td>\n<td style=\"text-align: center\">4096<\/td>\n<td style=\"text-align: center\">5120<\/td>\n<td style=\"text-align: center\">6144<\/td>\n<td style=\"text-align: center\">7168<\/td>\n<td style=\"text-align: center\">8192<\/td>\n<\/tr>\n<tr>\n<td>Migration time [s]<\/td>\n<td style=\"text-align: center\">30.7<\/td>\n<td style=\"text-align: center\">49.5<\/td>\n<td style=\"text-align: center\">69.0<\/td>\n<td style=\"text-align: center\">86.1<\/td>\n<td style=\"text-align: center\">101.4<\/td>\n<td style=\"text-align: center\">120.1<\/td>\n<td style=\"text-align: center\">138.0<\/td>\n<td style=\"text-align: center\">157.2<\/td>\n<\/tr>\n<tr>\n<td>Transferred data [MB]<\/td>\n<td style=\"text-align: center\">2725<\/td>\n<td style=\"text-align: center\">4773<\/td>\n<td style=\"text-align: center\">6728<\/td>\n<td style=\"text-align: center\">8760<\/td>\n<td style=\"text-align: center\">10500<\/td>\n<td style=\"text-align: center\">12550<\/td>\n<td style=\"text-align: center\">14600<\/td>\n<td style=\"text-align: center\">16125<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>[Table 4 &#8211; Migration time and data transfer with increasing stressed memory (step of 1024MB)]<\/p>\n<figure id=\"attachment_6984\" aria-describedby=\"caption-attachment-6984\" style=\"width: 605px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime1024.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6984 size-full\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime1024.jpg\" alt=\"migtime1024\" width=\"605\" height=\"340\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime1024.jpg 605w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime1024-300x168.jpg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/migtime1024-500x280.jpg 500w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/a><figcaption id=\"caption-attachment-6984\" class=\"wp-caption-text\">Figure 5 &#8211; Migration time with increasing stressed memory (steps of 1024MB)<\/figcaption><\/figure>\n<figure id=\"attachment_6982\" aria-describedby=\"caption-attachment-6982\" style=\"width: 605px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6982 size-full\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data1024.jpg\" alt=\"data1024\" width=\"605\" height=\"340\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data1024.jpg 605w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data1024-300x168.jpg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/data1024-500x280.jpg 500w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><figcaption id=\"caption-attachment-6982\" class=\"wp-caption-text\">Figure 6 &#8211; Data transfer with increasing stressed memory (steps of 1024MB)<\/figcaption><\/figure>\n<p>As can be seen from the data transfers in figure 6, using the stress tool we could see that all stressed memory was transferred twice &#8211; once during pre-copy and once during post copy &#8211; resulting in a total data transfer of very close to twice the amount of stressed memory.<\/p>\n<p>We have observed several interesting observation regarding the downtime:<\/p>\n<ul>\n<li>There was no downtime during the pre-copy phase &#8211; the VM responds to ping requests and appears available.<\/li>\n<li>There was a small downtime (&lt; 0.3 s) switching from pre-copy to post copy (activating VM on destination host and deactivating on source host)<\/li>\n<li>There was a quite unpredictable ping response rate in the post-copy phase. No matter how much memory was stressed sometimes no packet was lost during the post-copy phase, but sometimes we lost a significant amount of packets &#8211; in some cases it was as many as hundreds resulting in an outage of tens seconds. (We are still investigating this issue, but we think it must relate to networking and in particular ARP table configuration within the switches which are not updated to reflect the new location of the IP address)<\/li>\n<\/ul>\n<p>Generally speaking the VM downtimes varied based on the duration of post-copy phase but in most of the cases we observed unresponsiveness to ping in terms of a few seconds.<\/p>\n<p><b>Take aways<\/b><\/p>\n<p>Hybrid live migration brings a significant improvement to the virtual machine live migration world even though it\u2019s still a very new feature. So far the hybrid live migration seems to be a robust mechanism and big step towards more fluid host load management.<\/p>\n<p>The key takeaways from our work are:<\/p>\n<ul>\n<li>In our 1 Gb\/s network, migration of unloaded VMs took just a few seconds and even relatively heavily loaded VMs were migrated in terms of tens of seconds. Using 10Gb\/s interfaces networks we believe we could live migrate most VMs reliably in under 10s in our basic environment.<\/li>\n<li>The finite convergence of post-copy provides predictable behavior and possibility to estimate the longest possible migration duration based on VM description and network capabilities.<\/li>\n<li>Downtimes of unloaded or moderately-loaded VMs varied in terms of seconds. In some cases we observed higher unresponsiveness of the VM during the post-copy phase.<\/li>\n<\/ul>\n<p>Next, we will try to understand in a little more detail the reasons for varying downtime noted above, also we will explore additional live migration parameter settings to determine how they affect the performance and then focus on how it can be used for advanced load management in experimental systems.<\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/icehouse\/\">icehouse<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/juno\/\">juno<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/live-migration\/\">live migration<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack\/\">openstack<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/performance\/\">performance<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/post-copy\/\">post-copy<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>Previously we described how to \u00a0set up post-copy live migration in OpenStack Icehouse (and it should not be a problem to set it up in the same way in Juno). Naturally, \u00a0we were curious to see how it performs. In this blog post we focus on performance analysis of post-copy live migration in Openstack Icehouse [&hellip;]<\/p>\n","protected":false},"author":155,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[5],"tags":[421,524,450,240,416,516],"features":[],"class_list":["post-6980","post","type-post","status-publish","format-standard","hentry","category-articles","tag-icehouse","tag-juno","tag-live-migration","tag-openstack","tag-performance","tag-post-copy"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Performance analysis of &quot;post-copy&quot; live migration in Openstack - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Performance analysis of &quot;post-copy&quot; live migration in Openstack\" \/>\n<meta property=\"og:description\" content=\"Previously we described how to \u00a0set up post-copy live migration in OpenStack Icehouse (and it should not be a problem to set it up in the same way in Juno). Naturally, \u00a0we were curious to see how it performs. In this blog post we focus on performance analysis of post-copy live migration in Openstack Icehouse [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-09T11:08:14+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg\" \/>\n<meta name=\"author\" content=\"cima\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"cima\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/\"},\"author\":{\"name\":\"cima\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b\"},\"headline\":\"Performance analysis of &#8220;post-copy&#8221; live migration in Openstack\",\"datePublished\":\"2014-12-09T11:08:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/\"},\"wordCount\":1479,\"commentCount\":2,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg\",\"keywords\":[\"icehouse\",\"juno\",\"live migration\",\"openstack\",\"performance\",\"post-copy\"],\"articleSection\":[\"Articles\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/\",\"name\":\"Performance analysis of \\\"post-copy\\\" live migration in Openstack - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg\",\"datePublished\":\"2014-12-09T11:08:14+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg\",\"width\":605,\"height\":340},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Performance analysis of &#8220;post-copy&#8221; live migration in Openstack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b\",\"name\":\"cima\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g\",\"caption\":\"cima\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/cima\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Performance analysis of \"post-copy\" live migration in Openstack - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/","og_locale":"en_US","og_type":"article","og_title":"Performance analysis of \"post-copy\" live migration in Openstack","og_description":"Previously we described how to \u00a0set up post-copy live migration in OpenStack Icehouse (and it should not be a problem to set it up in the same way in Juno). Naturally, \u00a0we were curious to see how it performs. In this blog post we focus on performance analysis of post-copy live migration in Openstack Icehouse [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2014-12-09T11:08:14+00:00","og_image":[{"url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg","type":"","width":"","height":""}],"author":"cima","twitter_card":"summary_large_image","twitter_misc":{"Written by":"cima","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/"},"author":{"name":"cima","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b"},"headline":"Performance analysis of &#8220;post-copy&#8221; live migration in Openstack","datePublished":"2014-12-09T11:08:14+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/"},"wordCount":1479,"commentCount":2,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg","keywords":["icehouse","juno","live migration","openstack","performance","post-copy"],"articleSection":["Articles"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/","url":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/","name":"Performance analysis of \"post-copy\" live migration in Openstack - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg","datePublished":"2014-12-09T11:08:14+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/12\/unloadedtime.jpg","width":605,"height":340},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/performance-analysis-of-post-copy-live-migration-in-openstack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Performance analysis of &#8220;post-copy&#8221; live migration in Openstack"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b","name":"cima","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g","caption":"cima"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/cima\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/6980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/155"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=6980"}],"version-history":[{"count":4,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/6980\/revisions"}],"predecessor-version":[{"id":6990,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/6980\/revisions\/6990"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=6980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=6980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=6980"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=6980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}