<div dir="ltr">Oh. Looks like the problem with test performance is very simple if you&#39;ve applied all the patches from my branch.<div>My branch has one patch called &quot;minimal reproducer for maps008 race condition&quot;. It slows dows test execution very very much.</div><div>This is debugging patch. Could you revert it and rerun maps008 test on your machine&amp;<br><div><br></div><div>After revert of this patch and</div><div><div>#undef PAGE_SIZE</div><div>#define PAGE_SIZE (128 * 1024)</div></div><div><br></div><div>I&#39;ve got good test speed:</div><div><br></div><div><div>./test/zdtm.py run -t zdtm/transition/maps008</div><div>=== Run 1/1 ================</div><div><br></div><div>======================= Run zdtm/transition/maps008 in h =======================</div><div>cc -g -O2 -Wall -Werror -fno-strict-aliasing  -iquote ../lib/arch/x86/include -I../lib   maps008.c ../lib/libzdtmtst.a ../lib/libzdtmtst.a -o maps008</div><div>Start test</div><div>Test is SUID</div><div>./maps008 --pidfile=maps008.pid --outfile=maps008.out</div><div>Run criu dump</div><div>Run criu restore</div><div>Wait for zdtm/transition/maps008 to die for 0.100000</div><div>Wait for zdtm/transition/maps008 to die for 0.200000</div><div>Wait for zdtm/transition/maps008 to die for 0.400000</div><div>Removing dump/zdtm/transition/maps008/35</div><div>====================== Test zdtm/transition/maps008 PASS =======================</div></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-08-26 15:28 GMT+03:00 Eugene Batalov <span dir="ltr">&lt;<a href="mailto:eabatalov89@gmail.com" target="_blank">eabatalov89@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Looks like test just hasn&#39;t finished on your machine.</div>Test working time is actually quite long and it looks like it is good idea to make it quicker.<div>On my machine:<br><div><br></div><div><div>./test/zdtm.py run -t zdtm/transition/maps008</div><span class=""><div>=== Run 1/1 ================</div><div><br></div><div>======================= Run zdtm/transition/maps008 in h =======================</div><div>Start test</div><div>Test is SUID</div><div>./maps008 --pidfile=maps008.pid --outfile=maps008.out</div><div>Run criu dump</div><div>Run criu restore</div><div>Wait for zdtm/transition/maps008 to die for 0.100000</div><div>Wait for zdtm/transition/maps008 to die for 0.200000</div><div>Wait for zdtm/transition/maps008 to die for 0.400000</div><div>Wait for zdtm/transition/maps008 to die for 0.800000</div><div>Wait for zdtm/transition/maps008 to die for 1.600000</div><div>Wait for zdtm/transition/maps008 to die for 3.200000</div><div>Wait for zdtm/transition/maps008 to die for 6.400000</div></span><div>Removing dump/zdtm/transition/maps008/<wbr>26</div><div>====================== Test zdtm/transition/maps008 PASS =======================</div></div><div><br></div></div><div>But if I do:</div><div><div>#undef PAGE_SIZE</div><div>#define PAGE_SIZE (64 * 1024)</div></div><div><br></div><div>Then we have ~2x execution time:</div><div><div>./test/zdtm.py run -t zdtm/transition/maps008</div><span class=""><div>=== Run 1/1 ================</div><div><br></div><div>======================= Run zdtm/transition/maps008 in h =======================</div></span><div>cc -g -O2 -Wall -Werror -fno-strict-aliasing  -iquote ../lib/arch/x86/include -I../lib   maps008.c ../lib/libzdtmtst.a ../lib/libzdtmtst.a -o maps008</div><span class=""><div>Start test</div><div>Test is SUID</div><div>./maps008 --pidfile=maps008.pid --outfile=maps008.out</div><div>Run criu dump</div><div>Run criu restore</div><div>Wait for zdtm/transition/maps008 to die for 0.100000</div><div>Wait for zdtm/transition/maps008 to die for 0.200000</div><div>Wait for zdtm/transition/maps008 to die for 0.400000</div><div>Wait for zdtm/transition/maps008 to die for 0.800000</div><div>Wait for zdtm/transition/maps008 to die for 1.600000</div><div>Wait for zdtm/transition/maps008 to die for 3.200000</div><div>Wait for zdtm/transition/maps008 to die for 6.400000</div><div>Wait for zdtm/transition/maps008 to die for 12.800000</div></span><div>Removing dump/zdtm/transition/maps008/<wbr>35</div><div>====================== Test zdtm/transition/maps008 PASS =======================</div></div><div><br></div><div>So I&#39;ll find some way to speed it up.</div><div><br></div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">2016-08-26 10:12 GMT+03:00 Laurent Dufour <span dir="ltr">&lt;<a href="mailto:ldufour@linux.vnet.ibm.com" target="_blank">ldufour@linux.vnet.ibm.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On 25/08/2016 18:15, Eugene Batalov wrote:<br>
&gt; Thank you, Laurent.<br>
&gt;<br>
&gt; I&#39;ve checked bugfix again and found a small bug in it. It is in place<br>
&gt; of memX_size variables assignment (I&#39;ve redefined them locally o_0 and<br>
&gt; test on my machine wasn&#39;t failing).<br>
&gt; Please try updated branch<br>
&gt; <a href="https://github.com/eabatalov/criu/commit/f4d3a0f6235c47622fe3c383e201044806b8d6aa" rel="noreferrer" target="_blank">https://github.com/eabatalov/c<wbr>riu/commit/f4d3a0f6235c47622fe<wbr>3c383e201044806b8d6aa</a><br>
<br>
</span>Hi Eugene,<br>
<br>
This is better but there is still something wrong happening.<br>
<br>
Here is the output I got when the test on my victim node:<br>
<br>
laurent@frags:~/work/criu/test<wbr>$ sudo ./zdtm.py run -t<br>
zdtm/transition/maps008<br>
=== Run 1/1 ================<br>
<br>
======================= Run zdtm/transition/maps008 in h<br>
=======================<br>
Start test<br>
Test is SUID<br>
./maps008 --pidfile=maps008.pid --outfile=maps008.out<br>
Run criu dump<br>
Run criu restore<br>
Wait for zdtm/transition/maps008 to die for 0.100000<br>
Wait for zdtm/transition/maps008 to die for 0.200000<br>
Wait for zdtm/transition/maps008 to die for 0.400000<br>
Wait for zdtm/transition/maps008 to die for 0.800000<br>
Wait for zdtm/transition/maps008 to die for 1.600000<br>
Wait for zdtm/transition/maps008 to die for 3.200000<br>
Wait for zdtm/transition/maps008 to die for 6.400000<br>
Wait for zdtm/transition/maps008 to die for 12.800000<br>
Wait for zdtm/transition/maps008 to die for 25.600000<br>
####### Test zdtm/transition/maps008 FAIL at zdtm/transition/maps008 die<br>
#######<br>
Test output: ==============================<wbr>==<br>
09:08:15.769:    26: PASS<br>
<br>
 &lt;&lt;&lt; ==============================<wbr>==<br>
Traceback (most recent call last):<br>
  File &quot;zdtm.py&quot;, line 1585, in &lt;module&gt;<br>
    do_run_test(tinfo[0], tinfo[1], tinfo[2], tinfo[3])<br>
  File &quot;zdtm.py&quot;, line 1108, in do_run_test<br>
    t.kill()<br>
  File &quot;zdtm.py&quot;, line 418, in kill<br>
    os.kill(int(self.__pid), sig)<br>
OSError: [Errno 3] No such process<br>
##############################<wbr>####### FAIL<br>
##############################<wbr>#######<br>
<br>
<br>
So the test&#39;s output is mentioning &quot;PASS&quot; while zdtm.py is saying that<br>
it fails.<br>
I&#39;m wondering if there are some maps008 processes still running when<br>
zdtm is waiting for the test to end.<br>
<br>
Cheers,<br>
Laurent.<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="">-- <br><div data-smartmail="gmail_signature">Best regards,<br>Eugene Batalov.</div>
</span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Best regards,<br>Eugene Batalov.</div>
</div>