<div dir="ltr">My branch contains just a few minor changes from what was already there, mostly changes to hard coded values. I don&#39;t really remember exactly how the process works, but I think the only &quot;solution&quot; to the race problem is going to be to pause the container before performing the checkpoint and filesystem operations, and then unpausing on resume. I&#39;m not sure if the CRIU bug with not being able to checkpoint frozen processes still exists, but I also know that Docker doesn&#39;t currently support the incremental checkpointing stuff, so this solution may be somewhat slow in real world use (though, maybe p.haul isn&#39;t actually using `docker checkpoint`?)</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Feb 22, 2017 at 2:49 AM Pavel Emelyanov &lt;<a href="mailto:xemul@virtuozzo.com">xemul@virtuozzo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 02/20/2017 10:47 PM, Lele Ma wrote:<br class="gmail_msg">
&gt; On Mon, Feb 20, 2017 at 2:37 PM, Pavel Emelyanov &lt;<a href="mailto:xemul@virtuozzo.com" class="gmail_msg" target="_blank">xemul@virtuozzo.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt; On 02/20/2017 10:23 PM, Lele Ma wrote:<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; On Mon, Feb 20, 2017 at 1:16 PM, Pavel Emelyanov &lt;<a href="mailto:xemul@virtuozzo.com" class="gmail_msg" target="_blank">xemul@virtuozzo.com</a> &lt;mailto:<a href="mailto:xemul@virtuozzo.com" class="gmail_msg" target="_blank">xemul@virtuozzo.com</a>&gt;&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;     On 02/19/2017 10:50 PM, Lele Ma wrote:<br class="gmail_msg">
&gt;&gt;&gt;     &gt; Hi All,<br class="gmail_msg">
&gt;&gt;&gt;     &gt;<br class="gmail_msg">
&gt;&gt;&gt;     &gt; I am testing container live migration with this github repos &lt;<a href="https://github.com/boucher/docker/tree/v1.10_2-16-16-experimental" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/boucher/docker/tree/v1.10_2-16-16-experimental</a> &lt;<a href="https://github.com/boucher/docker/tree/v1.10_2-16-16-experimental" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/boucher/docker/tree/v1.10_2-16-16-experimental</a>&gt;&gt; for docker-1.10-dev. I found the container not restored exactly where it&#39;s checkpointed. For example:<br class="gmail_msg">
&gt;&gt;&gt;     &gt;<br class="gmail_msg">
&gt;&gt;&gt;     &gt; The container I run<br class="gmail_msg">
&gt;&gt;&gt;     &gt;      docker run  -d busybox  /bin/sh -c &#39;echo &gt; /foo; max=1000000; i=0; while [ $i -lt $max ] ; do date &gt;&gt; /foo; date +%s &gt;&gt; /foo; echo &quot;i=$i&quot; &gt;&gt; /foo; i=$(expr $i + 1 ); sleep 0.0001; done&#39;<br class="gmail_msg">
&gt;&gt;&gt;     &gt;<br class="gmail_msg">
&gt;&gt;&gt;     &gt; After migrated using p.haul, I got the /foo in target node:<br class="gmail_msg">
&gt;&gt;&gt;     &gt; .....<br class="gmail_msg">
&gt;&gt;&gt;     &gt; Sun Feb 19 03:23:13 UTC 2017<br class="gmail_msg">
&gt;&gt;&gt;     &gt; 1487474593<br class="gmail_msg">
&gt;&gt;&gt;     &gt; i=4247<br class="gmail_msg">
&gt;&gt;&gt;     &gt; Sun Feb 19 03:23:13 UTC 2017<br class="gmail_msg">
&gt;&gt;&gt;     &gt; 1487474593<br class="gmail_msg">
&gt;&gt;&gt;     &gt; i=4248                       -----&gt; before migration<br class="gmail_msg">
&gt;&gt;&gt;     &gt; i=7545                       -----&gt; after migartion ( it is supposed to be i=4249 )<br class="gmail_msg">
&gt;&gt;&gt;     &gt; Sun Feb 19 03:23:20 UTC 2017<br class="gmail_msg">
&gt;&gt;&gt;     &gt; 1487474600<br class="gmail_msg">
&gt;&gt;&gt;     &gt; i=7546<br class="gmail_msg">
&gt;&gt;&gt;     &gt; Sun Feb 19 03:23:20 UTC 2017<br class="gmail_msg">
&gt;&gt;&gt;     &gt; 1487474600<br class="gmail_msg">
&gt;&gt;&gt;     &gt; i=7547<br class="gmail_msg">
&gt;&gt;&gt;     &gt; ......<br class="gmail_msg">
&gt;&gt;&gt;     &gt; The printed numbers jump from &#39;i=4248&#39; to &#39;i=7545&#39; instead of increasing by one. It seems that it ignores<br class="gmail_msg">
&gt;&gt;&gt;     &gt; some computation status of the docker containers. But I am not sure where it goes wrong. However, when I<br class="gmail_msg">
&gt;&gt;&gt;     &gt; checkpoint and restore the container locally, the number increase continuously with no such jumping.<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;     Where do you get these numbers from? Docker console or some file on disk?<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; It&#39;s from the file &#39;/foo&#39; inside container. ( The container is running /bin/sh -c &#39;echo &gt; /foo;<br class="gmail_msg">
&gt;&gt;&gt; max=1000000; i=0; while [ $i -lt $max ] ; do date &gt;&gt; /foo; date +%s &gt;&gt; /foo; echo &quot;i=$i&quot; &gt;&gt; /foo;<br class="gmail_msg">
&gt;&gt;&gt; i=$(expr $i + 1 ); sleep 0.0001; done&#39; )<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; Then this is likely a race between images sync and filesystem sync.<br class="gmail_msg">
&gt;&gt; You can check your /foo file on the source node right after container<br class="gmail_msg">
&gt;&gt; migration, it should contain the missing numbers :)<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; What p.haul do you use, btw?<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; Thank you. But how can we avoid the race?<br class="gmail_msg">
<br class="gmail_msg">
Somewhere the final rsync is missing. But it&#39;s just a guess, I&#39;d suggest<br class="gmail_msg">
that we first check whether it&#39;s really the case. Can you check the /foo<br class="gmail_msg">
files on both source and destination nodes?<br class="gmail_msg">
<br class="gmail_msg">
&gt; I am using this repo from<br class="gmail_msg">
&gt; Ross Boucher: <a href="https://github.com/boucher/p.haul/tree/docker-1.10" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/boucher/p.haul/tree/docker-1.10</a><br class="gmail_msg">
<br class="gmail_msg">
Ah :) That&#39;s Ross&#39; fork. Let&#39;s ask Ross to join us in this discussion.<br class="gmail_msg">
<br class="gmail_msg">
-- Pavel<br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>